挺简单的一道例题。



#include<iostream>
#include<stack>
#define MAXN 1005
using namespace std;

int main() {
    int N;
    while(cin >> N&& N) {
        while(1) {
            int A = 1, B = 1, Sta[MAXN];
            bool ok = true;
            stack<int> C;
            for(int i = 1; i <= N; i++) {
                cin >> Sta[i];
                if(!Sta[i]) break;
            }
            if(!Sta[1]) break;
            while(B <= N) {
                if(A == Sta[B]) {A++; B++;}
                else if(!C.empty()&& C.top() == Sta[B]) {C.pop(); B++;}
                else if(A <= N) {C.push(A); A++;}
                else {
                    ok = false;
                    break;
                }
            }
            ok ? cout << "Yes" << endl : cout << "No" << endl;
        }
        cout << endl;
    }
    return 0;
}