#include<bits/stdc++.h>
using namespace std;
stack<int>a;
int ans[3000005],a1[3000005];
int cnt;
int main(){
memset(ans,0,sizeof(ans));
int n;
cin>>n;
for(int i=1 ; i<=n ; i++){
cin>>a1[i];
cnt++;
if(a.empty()) a.push(a1[i]);
else{
if(a.top()<a1[i]){
while(a.top()<a1[i]&&!a.empty()){
if(a.top()<a1[i]&&!a.empty()){
ans[a.top()]=cnt;
a.pop();
}
if(a.top()>a1[i]&&!a.empty()){
a.push(a1[i]);
break;
}
if(a.empty()){
a.push(a1[i]);
break;
}
}
}else a.push(a1[i]);
}
}
for(int i=1 ; i<=n ; i++) cout<<ans[a1[i]]<<" ";
return 0;
}
各位dalao,我感觉我也没访问空栈,谢谢