100 atcoder#ABC135B. [ABC135B] 0 or 1 Swap

[ABC135B] 0 or 1 Swap

题目描述

{1, 2, ..., N 1,\ 2,\ ...,\ N } を並び替えた数列 p p = {p1, p2, ..., pN p_1,\ p_2,\ ...,\ p_N } があります。

あなたは一度だけ、整数 i, j \ i,\ j  (1  i < j  N) \ (1\ \leq\ i\ <\ j\ \leq\ N) を選んで  pi  \ p_i\  pj  \ p_j\ を入れ替える操作を行うことができます。操作を行わないことも可能です。

p p を昇順にすることができるなら YES を、できないならば NO を出力してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N p1 p_1 p2 p_2 ... ... pN p_N

输出格式

p p を昇順にすることができるなら YES を、できないならば NO を出力せよ。

题目大意

题意:

有一个数列 pp,你可以任意交换两个数,注意只能交换一次,如果可以使 pp 变成升序排列,输出 YES,否则输出 NO

输入格式:

输入 nn

输入 nn 个数 pip_i

输出格式:

YES NO

5
5 2 3 4 1
YES
5
2 4 3 5 1
NO
7
1 2 3 4 5 6 7
YES

提示

制約

  • 入力は全て整数である。
  • 2  N  50 2\ \leq\ N\ \leq\ 50
  • p p は {1, 2, ..., N 1,\ 2,\ ...,\ N } を並び替えた数列である。

Sample Explanation 1

p1 p_1 p5 p_5 を入れ替えることで p p を昇順にできます。

Sample Explanation 2

この場合、どのような操作を行っても p p を昇順にすることはできません。

Sample Explanation 3

p p が最初から昇順なので、操作を行う必要はありません。