abc 372D
作者:
Air1222
,
2024-09-26 10:37:17
,
所有人可见
,
阅读 2
//单调栈+差分
//单调栈模型用于查找最近的比当前数大(小)的值
//查找到左边第一个比当前数大的左边,差分增加区间即可
#include <iostream>
#define x first
#define y second
using namespace std;
const int N = 2e5+10;
typedef pair<int,int>PII;
int n;
int h[N];
PII stk[N];
int tt;
int p[N];
int b[N];
int ans;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
while(tt&&stk[tt].x<=x) tt--;
if(tt) p[i]=stk[tt].y;
else p[i]=0;
stk[++tt]={x,i};
}
for(int i=1;i<=n;i++)
{
b[p[i]]++;
b[i]--;
}
for(int i=1;i<=n;i++)
{
b[i]+=b[i-1];
cout<<b[i]<<" ";
}
}