CF1592B Hemose Shopping

题目描述

Hemose 和他的朋友 Samez、AhmedZ、AshrafEzz、TheSawan 以及 O\_E 一起在德国购物。众所周知,Hemose 和他的朋友们都是解题高手,非常聪明。因此,他们会去德国所有的折扣市场。 Hemose 有一个长度为 $n$ 的整数数组。他希望 Samez 将数组按非递减顺序排序。由于这个问题对 Samez 来说太简单了,Hemose 只允许 Samez 使用以下操作: - 选择下标 $i$ 和 $j$,满足 $1 \le i, j \le n$,且 $|i - j| \geq x$。然后交换 $a_i$ 和 $a_j$ 的值。 你能告诉 Samez 是否存在一种方法,通过上述操作若干次(可能为 $0$ 次),将数组按非递减顺序排序吗?

输入格式

每个测试包含多个测试用例。第一行包含测试用例个数 $t$($1 \leq t \leq 10^5$)。接下来是每个测试用例的描述。 每个测试用例的第一行包含两个整数 $n$ 和 $x$($1 \leq x \leq n \leq 10^5$)。 每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, ..., a_n$($1 \leq a_i \leq 10^9$)。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一行字符串。 如果 Samez 能通过上述操作将数组按非递减顺序排序,输出 "YES"(不带引号);否则输出 "NO"(不带引号)。 你可以用任意大小写输出 "YES" 和 "NO"。

说明/提示

在第一个测试用例中,你无法进行任何操作。 在第二个测试用例中,数组已经是有序的。 在第三个测试用例中,你可以按如下方式进行操作: - $[5,1,2,3,4]$,交换 $a_1$ 和 $a_3$ - $[2,1,5,3,4]$,交换 $a_2$ 和 $a_5$ - $[2,4,5,3,1]$,交换 $a_2$ 和 $a_4$ - $[2,3,5,4,1]$,交换 $a_1$ 和 $a_5$ - $[1,3,5,4,2]$,交换 $a_2$ 和 $a_5$ - $[1,2,5,4,3]$,交换 $a_3$ 和 $a_5$ - $[1,2,3,4,5]$ (这里 $swap(a_i, a_j)$ 表示交换位置 $i$ 和 $j$ 的元素。) 由 ChatGPT 4.1 翻译