数组模拟栈
#include <iostream>
using namespace std;
const int N = 1e6 + 10;
int tt = 0, stk[N];
int main()
{
int m;
cin >> m;
while (m -- )
{
int x;
cin >> x;
while (tt && stk[tt] >= x) tt--; //栈不为空且栈顶元素小于当前元素,则出栈
if (tt) printf("%d ", stk[tt]); //若栈仍不为空,则输出栈顶元素
else printf("-1 "); //栈为空,说明左边没有比x小的数
stk[ ++ tt] = x; //当前元素入栈
}
return 0;
}