题目:http://poj.org/problem?id=1363
分析:简单的栈模拟,看status上之前很多菊苣都是0ms的空间也很小,不知道是怎么做的呢
#include <cstdio>
int n, a[1005], st[1005];
bool check()
{
int top = 0, *p = a + 1, i = 1;
while(p - a <= n){
while(!top || st[top] != *p){
if(i > n) return false;
st[++top] = i++;
}
--top;
++p;
}
return true;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("__in.txt", "r", stdin);
freopen("__out.txt", "w", stdout);
#endif
while(scanf("%d", &n), n){
while(scanf("%d", a + 1), a[1]){
for(int i = 2; i <= n; ++i) scanf("%d", a + i);
puts(check() ? "Yes" : "No");
}
puts("");
}
return 0;
}