bdfz_2024_summer/day14/P5788/P5788.cpp

41 lines
714 B
C++

#include <cctype>
#include <cstdio>
#include <iostream>
#include <stack>
using namespace std;
const int MAX_N=3e6+5;
int readInt();
int a[MAX_N];
int ans[MAX_N];
stack<int>s;
int main(){
const int n=readInt();
for(int i=1;i<=n;i++){
a[i]=readInt();
}
for(int i=n;i>=1;i--){
while(!s.empty()&&a[s.top()]<=a[i])s.pop();
ans[i]=s.empty()?0:s.top();
s.push(i);
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<" ";;
}
cout<<endl;
}
int readInt(){
int x=0,w=1;
char ch=0;
while (!isdigit(ch)) {
if(ch=='-')w=-1;
ch=getchar();
}
while(isdigit(ch)){
x=x*10+(ch-'0');
ch=getchar();
}
return x*w;
}