5750: 【固定滑窗】百度2023秋招-交换一次获得长度为k的排列

金币值:1 时间限制:2.000 s 内存限制:128 M
正确:16 提交:49 正确率:32.65% 命题人:

题目描述

小红有一个长度为n的排列,她可以选择两个位置,然后交换两个位置的数。 

她想知道能否通过最多一次交换,使得存在一个连续子段,是长度为k的排列。 

排列是指一个长度为 len 的整数数组,数组中包含1到len的每个数,且每个数只出现一次。

输入格式

第一行两个整数n,k,表示排列长度和连续子段长度。 

第二行n个整数a1, a2, ..., an,表示排列。 

1 <= k <= n <= 10^5

输出格式

如果能够通过最多一次交换,存在一个连续子段是排列,输出YES,并输出交换的位置:先输出一个整数x (0 <= x <= 1),然后输出x行,每行两个整数u, v,表示交换位置u, v (u < v) 

否则输出NO。

输入样例    复制

5 3
1 2 3 4 5

输出样例    复制

YES
0