CF220A Little Elephant and Problem

题目描述

小象遇到了一个问题——有人动了他按非减顺序排序的数组 $a$,长度为 $n$,现在数组中的某些元素可能被交换了。 小象不想报警,除非他确定不是自己不小心把数组弄乱了。他认为,只有当数组 $a$ 最多只需进行一次交换操作(不必是相邻元素),就可以重新变为非减序时,他才可能是无意中交换了两个元素。 请帮助小象判断,当前的数组 $a$ 是否有可能是他自己不小心交换了两个元素导致的。

输入格式

第一行包含一个整数 $n$($2 \leq n \leq 10^{5}$),表示数组 $a$ 的长度。 第二行包含 $n$ 个正整数,之间用空格隔开,每个数都不超过 $10^{9}$,表示数组 $a$。 注意,数组中的元素不一定互不相同。

输出格式

如果小象有可能自己不小心交换了数组中的两个元素导致当前的数组,请输出 `YES`;否则请输出 `NO`。

说明/提示

在第一个样例中,数组本来就是有序的,所以不需要任何交换操作(即 0 次),小于等于 1 次,因此答案是 `YES`。 在第二个样例中,如果交换第 1 个和第 3 个元素,整个数组就会变成有序的,所以只需要 1 次交换,因此答案是 `YES`。 在第三个样例中,需要超过一次交换才能将数组变成有序的,因此答案是 `NO`。 由 ChatGPT 5 翻译