最后一个大于
解题思路
单调栈模板题。
code
#include<iostream>
#include<cstdio>
#define int long long
#define mp make_pair
#define fst first
#define scd second
using namespace std;
int n,top;
int a[3000010];
int ans[3000010];
pair<int,int> b[3000010];
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
for(int i=n;i;i--)
{
while(top&&a[i]>=b[top].fst) top--;
ans[i]=(top?b[top].scd-i:0);
b[++top]=mp(a[i],i);
}
for(int i=1;i<=n;i++)
printf("%lld ",ans[i]);
}