题目链接:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=455
代码如下:
#include <iostream>
#include<cstdio>
#include<stack>
#define maxn 1005
using namespace std;
int aa[maxn];
int main()
{
int n;
stack<int>sta;
int flag=1;
while(scanf("%d",&n)!=EOF)
{
flag=1;
for(int i=1;i<=n;i++)
scanf("%d",&aa[i]);
int A=1,B=1;
while(B<=n)
{
if(A == aa[B])
{
A++;
B++;
}
else if(!sta.empty()&&sta.top()==aa[B])
{
sta.pop();
B++;
}
else if(A<=n)
{
sta.push(A);
A++;
}
else
{
flag=0;
break;
}
}
printf("%s\n",flag?"YES":"NO");
}
return 0;
}