#include<iostream> #include<stack> #include<algorithm> using namespace std; const int maxn=1000005; //int cmp(int x,int y) //{ // return x>y?1:0; //} int main() { int n; while(cin>>n) { /*排序比对的低级做法 int max=-1e9; int a[maxn]; for(int i=0;i<n;i++) { cin>>a[i]; if(a[i]>max) max=a[i]; } sort(a,a+n,cmp); stack<int> st; for(int i=0;i<n;i++) { st.push(a[i]); }*/ int a[maxn]; stack<int> st; int max=n; //因为1->n的排列 //题意是字典序最大,部分有序:所以从max开始输出 for(int i=0;i<n;i++) { cin>>a[i]; if(a[i]==max) { cout<<max<<" "; max--; } else{ st.push(a[i]); } } while(!st.empty()) { //出栈的三步操作:判空、输出顶部、弹出 cout<<st.top()<<" "; st.pop(); } cout<<endl; //最后换行的处理 } return 0; }