Type: Default 1000ms 256MiB

宇宙飞船

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

Description

在一个宇宙飞船停靠站中,有一条特殊的轨道系统,轨道如图所示。每艘宇宙飞船从入口A飞入停靠站,最终从出口B飞向太空。在停靠站中,这些飞船的顺序可以重新调整。假设从入口A飞来的飞船共有n艘(n≤1000),它们依次编号为1, 2, 3, …, n。注意,在飞船进入停靠站前,它们彼此是分离的,可以分别选择进入停靠站C或直接飞往出口B。

但是需要遵守以下规则:

  1. 一旦某艘飞船进入停靠站C,它就不能再返回入口A。
  2. 一旦某艘飞船离开停靠站C并飞往出口B,它就不能再返回停靠站C。

现在,停靠站的调度员需要判断是否能将这些飞船按照指定的顺序a1, a2, …, an从出口B有序发射出去。请你帮助判断是否可以完成这样的调度。

Input Format

第一行包含一个整数n (n≤1000),表示飞船的数量。
第二行包含n个整数,表示目标顺序a1, a2, …, an。

Output Format

如果可以实现指定的飞船顺序,从出口B按顺序发射,请输出字符串"YES";否则输出字符串"NO"。(注意输出需要大写,不包含引号)。

5
5 4 3 2 1
YES

Hint

这是一个经典的栈模拟问题,调度过程可以看作是一个入栈和出栈的过程。我们可以将其分为三个状态:未入栈(还在入口A)栈中(停靠站C)已出栈(从出口B发射)

关键点在于:

  • 当某艘飞船要被发射(出栈)时,它前面的所有飞船必须已经发射或在停靠站C中按顺序堆叠。
  • 停靠站C中的飞船顺序应该是从大到小(从栈顶到栈底),否则无法满足目标顺序。

我们可以通过以下步骤解决问题:

  1. 模拟每艘飞船的入栈和出栈过程。
  2. 如果某艘飞船需要发射且停靠站中的顺序无法满足要求,则输出"NO"。
  3. 如果所有飞船都能按照目标顺序发射,则输出"YES"。

例如,对于输入5 4 3 2 1,可以依次将飞船5, 4, 3, 2, 1按照目标顺序发射,输出"YES"。
而对于输入4 3 2 5 1,由于飞船1在飞船5之后发射,不符合规则,输出"NO"。

ACM寒假第二次训练

Not Attended
Status
Done
Rule
XCPC
Problem
8
Start at
2025-1-16 14:00
End at
2025-1-16 17:00
Duration
3 hour(s)
Host
Partic.
37