单调栈
主要是运用一个思想。如果当前x比栈top小 ,注意栈top的元素早就出现了。那么栈top一定不如x生存时间长
#include <bits/stdc++.h>
using namespace std ;
const int N = 1e5 + 100 ;
int q[N] , top = 0 ;
int main(){
ios::sync_with_stdio(false) ;
int n , x ; cin >> n ;
for(int i = 1 ; i<= n ; i++ ){
cin >> x;
while( top && q[top] >= x ) top -- ; //如果x比q[top]小,那么q[top]存在一定没有意义,不如x的生存时间长。
if(top)
cout<<q[top] <<" ";
else
cout<<-1 <<" ";//栈空就-1;
q[++top] = x ;
}
return 0 ;
}