单调栈
#include<bits/stdc++.h>
#define int long long
#define rep(i,x,y) for(int i=x;i<=y;i++)
using namespace std;
vector<int>G[514154];
int n,m,e;
int ans[61145014];
int a[61516501];
signed main() {
cin>>n;
rep(i,1,n) cin>>a[i];
stack<int>s;
stack<int>id;
for(int i=n;i>=1;i--) {
while(!s.empty()) {
if(s.top()<=a[i]) s.pop(),id.pop();
else break;
}
if(s.empty()) ans[i]=0;
else
ans[i]=id.top();
s.push(a[i]);
id.push(i);
}
rep(i,1,n) cout<<ans[i]<<' ';
return 0;
}

浙公网安备 33010602011771号