根据题意,发现我们要维护一个身高递减的序列。
因此,我们可以直接使用单调栈维护第 \(i\) 个人能看到的人数即可。
答案就是当前栈内的元素数量。
注意应先输出答案再将当前高度入栈。
#include<cstdio>
int n;
int h[100010];
int st[100010];
int top;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&h[i]);
printf("%d\n",top);
while(top>0&&st[top]<h[i]) top--;
st[++top]=h[i];
}
return 0;
}
标签:int,题解,top,100010,donuts,2015
From: https://www.cnblogs.com/osfly/p/17657982.html