uva 514

时间:2023-03-26 23:54:44

栈的简单应用

/*************************************************************************
> Author: xlc2845 > Mail: xlc2845@gmail.com
> Created Time: 2013年11月12日 星期二 13时31分53秒
************************************************************************/ #include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>
#include <set>
#include <cstdlib>
#define maxn 100010
using namespace std; stack<int> h;
int cc[1005]; int main()
{
int n;
while(scanf("%d", &n) && n)
{
while(scanf("%d", &cc[0]) && cc[0])
{
while (!h.empty()) h.pop();
for(int i = 1; i < n; i++)
scanf("%d", &cc[i]);
int now = 0;
for(int i = 1; i <= n; i++)
{
if(i == cc[now])
{
now++;
while(!h.empty())
{
if(h.top() == cc[now])
{
h.pop();
now++;
}
else break;
}
}
else h.push(i);
}
if(h.empty()) puts("Yes");
else puts("No");
}
puts("");
}
return 0;
}