#include<bits/stdc++.h>
using namespace std;
int a[1000086],q[1000086],b[1000086];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
int maxn=INT_MIN;
for(int i=n;i>0;i--)
{
maxn=max(maxn, a[i]);
b[i]=maxn;
}//预处理后缀,使这个数组保存从i-n的最大出栈值
int t=0;
for(int i=1;i<=n;i++)
{
q[++t]=a[i];
while(q[t]>b[i+1])//没有更优选择,也就是当前的数比后面的数大
{
printf("%d ",q[t --]);
}
}
while(t)
{
printf("%d ", q[t --]);
}
return 0;
}
点个赞再走吧~