#include<iostream>
using namespace std;
struct node {
int sk[1050];
int p;
};
int N,s[1050],num[1050];
bool cmp(node sta,int s[],int n){
int top=1;
bool flag=1;
for(int i=0;i<n;i++){
while(1){
if(top<=n && s[i]==num[top]) {top++;break;}
else if(sta.p>=0 && sta.sk[sta.p]==s[i]){sta.p--;break;}
else if(s[i]>num[top]){
sta.p++;
sta.sk[sta.p]=num[top++];
}
else{
flag = 0;
break;
}
}
if(!flag) break;
}
return flag;
}
void clear(node &s){
s.p=-1;
}
int main(){
node sta;
for(int i=0;i<1010;i++) num[i]=i;
while(cin>>N && N){
while(1){
clear(sta);
for(int i = 0 ; i < N ; i++){
cin>>s[i];
if(!s[i])break;
}
if(!s[0]) break;
if(cmp(sta,s,N)) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
cout<<endl;
}
return 0;
}
POJ1363
最新推荐文章于 2020-03-15 18:34:43 发布
本文介绍如何使用C++实现结构体及其内部数组与整数数组的比较功能,通过自定义比较函数来判断两个结构体是否相等。
1457

被折叠的 条评论
为什么被折叠?



