就是查看出队序列合不合理罢了,只要和数组中的数一致按需出队即可。
#include <bits/stdc++.h>


using namespace std;
const int maxn = 100000+10;
int a[maxn];

int n;
bool is_end() {
    cin>>n;
    return n==0? false : true;
}

int main() {
    int k;
    while (is_end()) {
        cin>>k;
        if (k==0) cout<<endl;
        stack<int> sk;
        while (k!=0) {
            stack<int> sk;
            a[1] = k;
            for (int i=2;i<=n;i++) {
                cin>>a[i];
            }
            int j = 1;
            for (int i=1;i<=n;i++) {
                sk.push(i);
                while (!sk.empty()&&sk.top()==a[j]) {
                    sk.pop();
                    j++;
                }
            }
            if (sk.empty()) cout<<"Yes\n";
            else cout<<"No\n";
            cin>>k;
            if (k==0) cout<<endl;
        }
        
    }
    
    
    return 0;
}