https://vjudge.net/problem/UVA-514
#include<iostream>
#include<cstdio>
#include<string.h>
#include<stack>
#include<set>
#include<map>
#include<vector>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
int n;
int num[1010];
int main()
{
while (cin >> n && n)
{
while (1)
{
stack<int> s;
int A = 1, B = 1;//进站和出站顺序
cin >> num[1];
if (num[1] == 0)
break;
for (int i = 2; i <= n; i++)
cin >> num[i];
for (int i = 1, j = 1; i <= n && j <= n;)
{
if (num[i] == j)
{
i++; j++;
}
else if (!s.empty() && s.top() == num[i])
{
s.pop(); i++;
}
else
{
s.push(j++);
}
}
if (s.empty())
cout << "Yes" << endl;
else
cout << "No" << endl;
}
cout << endl;
}
return 0;
}