#include<bits/stdc++.h>
using namespace std;
stack<int> st;
int x,n;
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>x;
while(!st.empty()&&st.top()>=x)st.pop();
if(st.empty())cout<<"-1"<<' ';
else cout<<st.top()<<' ';
st.push(x);
}
return 0;
}
每次将栈中所有大于x的元素都出栈,只剩下比x小的数(并且顺序是栈底小,栈顶大)。如果栈为空,则输出-1;不为空,那么就输出栈顶。最后,将x压入栈。