#P1363. Rails

Rails

翻译

题目描述

在PopPush市有一个著名的火车站。那里的地形起伏极大。该车站建于上世纪。不幸的是,当时资金极其有限,只能铺设地面轨道。此外,车站只能建成死胡同式的(见图),并且由于可用空间不足,只能有一条轨道。

当地的传统是,每列从A方向到达的火车必须以某种方式重新排列车厢后从B方向驶出。假设从A方向到达的火车有NN节车厢(N1000N \leq 1000),编号为递增的1,2,,N1, 2, \ldots, N。负责火车重新排列的工作人员必须知道是否有可能将车厢排列成a1,a2,,aNa_1, a_2, \ldots, a_N的顺序从B方向驶出。请帮助他编写一个程序,判断是否可以得到所需的车厢顺序。可以假设,单个车厢在进入车站之前可以与火车断开,并且可以自行移动到B方向的轨道上。还可以假设,车站内任何时候都可以容纳任意数量的车厢。但是,一旦车厢进入车站,就不能再回到A方向的轨道;一旦车厢从B方向驶出车站,就不能再返回车站。

输入

输入由若干块数据组成。除最后一块外,每块数据描述一列火车及其可能的多个重新排列需求。每块数据的第一行是整数NN(如上所述)。接下来的每一行是1,2,,N1, 2, \ldots, N的一个排列。块的最后一行仅包含00。最后一块数据仅包含一行00

输出

输出包含与输入中排列行对应的行。对于输入中每一行排列,输出行包含"Yes"(如果可以按要求排列车厢)或"No"(否则)。此外,每块输入数据对应的输出行之后有一个空行。输出中没有对应最后一个“空”块输入的行。

输入数据示例1

5
1 2 3 4 5
5 4 1 2 3
0
6
6 5 4 3 2 1
0
0

输出数据示例1

Yes
No

Yes

来源

中欧1997年竞赛