#AT1392. B - 0 or 1 Swap

B - 0 or 1 Swap

B - 0或1次交换

得分:200 分

题目描述

我们有一个序列 $p$ = {$p_1,\ p_2,\ ...,\ p_N$},它是 {$1,\ 2,\ ...,\ N$} 的一个排列。

你最多可以执行以下操作一次:选择整数 $i$ 和 $j$ $(1 \leq i < j \leq N)$,交换 $p_i$ 和 $p_j$。注意,你也可以选择不执行该操作。

如果你可以以这种方式将 $p$ 按升序排序,则输出 YES,否则输出 NO

约束

  • 输入中的所有值都是整数。
  • $2 \leq N \leq 50$
  • $p$ 是 {$1,\ 2,\ ...,\ N$} 的一个排列。

输入

输入遵循以下格式,从标准输入中获取:

NN

p1p_1 p2p_2 ...... pNp_N

输出

如果你可以按照问题说明的方式将 $p$ 按升序排序,则输出 YES,否则输出 NO


5
5 2 3 4 1
YES

你可以通过交换 $p_1$ 和 $p_5$ 来将 $p$ 按升序排序。


5
2 4 3 5 1
NO

在这种情况下,交换任意两个元素都无法将 $p$ 按升序排序。


7
1 2 3 4 5 6 7
YES

$p$ 已经按升序排序,不需要任何操作。