Problem

1 /5


货车分拣

Problem

<分区>

需要确定是否可以使用堆栈对数字序列进行排序。

一列火车从轨道 1 到达死胡同(见图片)。允许一次从火车上解开一节或几节第一节车厢并将它们带到死胡同(如果您愿意,您甚至可以一次将整列火车带到死胡同)。之后,将部分车皮运到轨道2的一侧。然后你可以再将几节车皮运到死胡同,再次将部分车皮运到轨道2的一侧。以此类推,使得每节车皮仅从轨道 1 驶入死胡同一次,然后在轨道 2 离开死胡同一次。禁止从轨道 2 进入死胡同或离开轨道 1 的死胡同。如果不进入死胡同,就无法从路径 1 到达路径 2。

火车车厢最初的行驶顺序是已知的。要求按照指示操​​作,使火车车厢按顺序行驶(先是第一辆,然后是第二辆,以此类推,从火车头开始沿着轨道 2 远离死胡同计算)。写个程序看看能不能搞定。
 
输入
输入数字 N —火车中的车厢数量 (\(1<=N<=2000\))。接下来是车厢编号,从在轨道 1 上行驶的火车头到尽头。汽车用从 1N 的自然数编号,每个自然数恰好出现一次。
 
输出
当火车从尽头走轨道 2 时,是否可以让车厢按顺序从 1N,从火车头数起?如果可能,显示消息YES。 如果不可能,打印NO
 
 
例子
<头> <日># <正文>
输入 输出 注意
1 3
3 2 1
我们需要把整列火车带到死胡同,然后把它完全带到2号轨道
2
4
4 1 3 2
首先,您需要将两辆货车带到死胡同,其中一辆将留在死胡同,第二辆 —取出到2nd track,然后再带两辆车到死胡同,把站在死胡同的3辆车取出到2nd track
3 3
2 3 1
没有