翻转数组
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
Description
有一个由 个数组成的数组 ,你可以进行任意次 翻转操作,求是否可以通过该操作将这个数组按照从小到大排序。
其中, 翻转操作指的是从数组里选取一段连续且长度不超过 的子数组并将其翻转,即选取两个数 ,把 变成 。
Format
Input
输入一个数 ,表示该题有 组数据。
对于每组数据,第一行,输入两个数 ,分别表示数组的长度和翻转操作的长度。
第二行,输入 个数 ,表示这个数组。
Output
对于每一组数据,如果能够通过操作实现从小到大排序,输出 YES,否则输出 NO。
Samples
5
3 2
1 2 3
3 1
9 9 9
4 4
6 4 2 1
4 3
10 3 830 14
2 1
3 1
YES
YES
YES
YES
NO
样例 参见附加文件中的 reverse02.in
与 reverse02.ans
。
Explanation
样例 1 解释
对于第一、二组数据,显然我们不需要进行操作。
对于第三组操作,我们执行一次 翻转,将下标 的子数组翻转得到排序完的数组。
对于第四组操作,我们执行两次 翻转,将下标 和 的子数组翻转得到排序完的数组。
对于第五组操作,无论我们如何操作都无法得到目标数组。
Limitation
对于 的数据,$1\leq T\leq 20,1\leq k\leq n\leq 10^5,0\leq a_i\leq 10^9$。