题目要求相当于每次有新数据入栈,凡进一个之前都把比即将插入的点大的点全部出栈。直到小于即将入栈的点,相当于栈内永远都是单调递增的数据进栈
#include<iostream>
using namespace std;
const int N=100010;
int main()
{
int a[N];
int tt,m,x;
cin>>m;
while(m--)
{
cin>>x;
while(tt&&a[tt]>=x)tt--;
if(!tt)printf("-1 ");
else {printf("%d ",a[tt]);}
a[++tt]=x;
}
}