AC代码
#include<iostream>
#include<stack>
using namespace std;
int n;
int a[3000010],res[3000010];
struct node{
int value;
int index;
};
int main(){
stack<node> mystack;
node tmp;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=n;i>=1;i--){
while(!mystack.empty() && a[i]>=mystack.top().value)
mystack.pop();
res[i]=mystack.empty()?0:mystack.top().index;
tmp.value=a[i];tmp.index=i;
mystack.push(tmp);
}
for(int i=1;i<=n;i++)
printf("%d ",res[i]);
return 0;
}