UVa 514 栈

来源:互联网 发布:linux保存命令 编辑:程序博客网 时间:2024/05/17 06:48
#include<iostream>
#include<cstdio>
#include<stack>
#include<cstring>
using namespace std;
int a,b,target[2000];
bool flag=1;


int main()
{
int n;
while(~scanf("%d",&n)&&n)
{
while(1)
{
stack<int> s;
int i;
for(i=1;i<=n;i++)
{
scanf("%d",&target[i]);
if(target[1]==0) break;
}
if(target[1]==0)
{
printf("\n");break;
}
a=b=1;
flag=1;
while(b<=n)
{
if(a==target[b]){a++;b++;}
else if(!s.empty()&&s.top()==target[b]) {s.pop();b++;}
else if(a<=n) s.push(a++);
else {flag=0;break;}
}
printf("%s\n",flag?"Yes":"No");
}
}
return 0;
}
0 0
原创粉丝点击