此题从n,n-1....开始出栈(前提是能够出)

#include<iostream>
#include<stack>
#include<algorithm>
#include<vector>
using namespace std;
const int N=1e6+10;
int a[N];
vector<int> v;//存stk中剩余的数
stack<int> stk;
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++){
        int j=n;
        stk.push(a[i]);//依次放入栈中
        if(a[i]==j){//从n,n-1....开始出栈
            stk.pop();
            cout<<j<<" ";
            --j;
        }
    }
    //当然有未出完的部分
    while(!stk.empty()){
        v.push_back(stk.top());
        stk.pop();
    }
    for(int i=0;i<v.size();i++){
        if(i==v.size()-1) cout<<v[i];
        else cout<<v[i]<<' ';
    }
    return 0;
}