#include<bits/stdc++.h>
using namespace std;
int main(){
int a;
cin>>a;
vector<int>x,y;
int b[200000],f[200000],c;
for(int x=1;x<=a;x++){
cin>>b[x];
}
for(int z=1;z<=a;z++){
c=b[z];;
if(x.size()!=0){
while(true){
if(x.size()!=0&&x[x.size()-1]<c){
f[y[y.size()-1]]=z;
x.pop_back();
y.pop_back();
}
else{
x.push_back(c);
y.push_back(z);
break;
}
}
}
else{
x.push_back(c);
y.push_back(z);
}
}
for(int x=1;x<=a;x++){
cout<<f[x]<<endl;
}
}
单调栈代码存档
最新推荐文章于 2024-07-13 19:27:27 发布