题意
传送门 POJ 1363
题解
车厢从铁道 A A A 进站,再从 B B B 出站,其实就是模拟栈的压栈、出栈。那么每次处理当前最早出栈的车厢即可。
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <stack>
using namespace std;
#define inf 0x3f3f3f3f
#define maxn 1005
int n, a[maxn], b[maxn];
void solve()
{
stack<int> sk;
for (int i = 0, j = 0; i < n; i++)
{
while (j < n && (sk.empty() || sk.top() != a[i]))
{
sk.push(b[j++]);
}
if (sk.top() != a[i])
{
puts("No");
return;
}
sk.pop();
}
puts("Yes");
}
int main()
{
for (int i = 0; i < maxn; i++)
{
b[i] = i + 1;
}
while (~scanf("%d", &n) && n)
{
while (~scanf("%d", a) && a[0] != 0)
{
for (int i = 1; i < n; i++)
{
scanf("%d", a + i);
}
solve();
}
puts("");
}
return 0;
}