#include<iostream>
#include<stack>
using namespace std;
int knum[1001];
int main()
{
int num,tnum;
while(cin>>num&&num)
{
while(1)
{
int k=1,z=0;
bool flag=false;
stack<int> sta;
sta.push(k++);
bool fl= false;
for(int i=0;i<num;i++)
{
cin>>knum[i];
if(knum[i]==0)
{
fl=true;
break;
}
}
if(fl)
break;
for(int i=0;i<num;i++)
{
int temp;
temp=knum[z++];
if(!sta.empty())
if(sta.top()==temp)//栈顶
{
sta.pop();
continue;
}
for(int j=0;k<=num;j++)
{
if(k==temp)//压栈后有
{
k++;
break;
}
sta.push(k++);
}
if(!sta.empty())
if(temp<sta.top())
{
flag=true;
break;
}
}
if(flag)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
cout<<endl;
}
return 0;
}
zoj1259-Rails
最新推荐文章于 2017-06-22 23:11:51 发布