题目描述
单调栈
C++ 代码
#include<bits/stdc++.h>
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define per(i,j,k) for(int i=j;i>=k;i--)
#define mset(i,j) memset(i,j,sizeof(i))
#define ll long long
#define INF 0x3f3f3f3f
#define IO std::ios::sync_with_stdio(false); cin.tie(0)
using namespace std;
const int N=100010;
int q[N];
int main(){
int n;cin>>n;
int flag=0;
while(n--){
int x;cin>>x;
if(flag==0) {
q[++flag]=x;
cout<<-1<<' ';
}
else{
while(q[flag]>=x&&flag>=1) --flag;
if(flag>=1) printf("%d ",q[flag]);
else cout<<-1<<' ';
q[++flag]=x;
}
}
return 0;
}