C++ 代码
#include<iostream>
using namespace std;
const int N=1e5+10;
int stack[N],tt=-1;
int m;
int main()
{ cin>>m;
for(int i=0;i<m;i++)
{
int x;
cin>>x;
while(tt!=-1 and stack[tt]>=x) tt--;
//经过循环有两种结果,第一:tt=-1栈被删空了说明前面的元素全部都没有小于他的,那输出-1,并且入栈就行了,第二 栈顶符合<x那么输出就行了;
if(tt!=-1)cout<<stack[tt]<<" ";
/*可以换else*/ if(tt==-1)cout<<"-1"<<" ";
stack[++tt]=x;
}
return 0;
}