範例程式碼 uva514
//uva514
#include <stdio.h>
#include <algorithm>
#include <stack>
using namespace std;
int main(void){
int n, i, j, a[1001], prt = 0;
while (scanf("%d", &n) && n){
while (scanf("%d", &a[0]) && a[0]){
if (a[0] == 0)
continue;
for (i = 1; i < n; i++)
scanf("%d", &a[i]);
j = 0;
stack<int> S;
for (i = 1; i <= n; i++){
if (a[j] == i)
j++;
else if (!S.empty() && S.top() == a[j]) {
j++;
S.pop();
}
else
S.push(i);
while (!S.empty() && S.top() == a[j]){
j++;
S.pop();
}
}
if (S.empty() && j == n)
printf("Yes\n");
else
printf("No\n");
}
printf("\n");
}
return 0;
}