【棧】例題6-2 UVa 514
阿新 • • 發佈:2019-02-19
/* 演算法競賽入門 LRJ 例題6-2(UVa 514)Rails */ #include<iostream> #include<cstdio> #include<cstring> #include<stack> #include<map> #include<queue> #include<cmath> #include<algorithm> #include<deque> typedef long long LL; using namespace std; #pragma comment(linker, "/STACK:102400000,102400000") const int INF=0x3f3f3f3f; const int N = 10010; int a[N]; stack<int> Q; int main() { int n; while(~scanf("%d",&n), n) { while(~scanf("%d",&a[1])) { if(a[1] == 0) break; for(int i = 2; i <= n; i++) scanf("%d",&a[i]); int in = 1,out = 1; while(out <= n) { if(in == a[out]) in++,out++; else if(!Q.empty() && Q.top() == a[out]) Q.pop(),out++; else if(in < n) Q.push(in++); else break; } if(out != n+1) printf("No\n"); else printf("Yes\n"); } puts(""); } return 0; }