CF1553E.Permutation Shift
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
An identity permutation of length n is an array [1,2,3,…,n] .
We performed the following operations to an identity permutation of length n :
- firstly, we cyclically shifted it to the right by k positions, where k is unknown to you (the only thing you know is that 0≤k≤n−1 ). When an array is cyclically shifted to the right by k positions, the resulting array is formed by taking k last elements of the original array (without changing their relative order), and then appending n−k first elements to the right of them (without changing relative order of the first n−k elements as well). For example, if we cyclically shift the identity permutation of length 6 by 2 positions, we get the array [5,6,1,2,3,4] ;
- secondly, we performed the following operation at most m times: pick any two elements of the array and swap them.
You are given the values of n and m , and the resulting array. Your task is to find all possible values of k in the cyclic shift operation.
输入格式
The first line contains one integer t ( 1≤t≤105 ) — the number of test cases.
Each test case consists of two lines. The first line contains two integers n and m ( 3≤n≤3⋅105 ; 0≤m≤3n ).
The second line contains n integers p1,p2,…,pn ( 1≤pi≤n , each integer from 1 to n appears in this sequence exactly once) — the resulting array.
The sum of n over all test cases does not exceed 3⋅105 .
输出格式
For each test case, print the answer in the following way:
- firstly, print one integer r ( 0≤r≤n ) — the number of possible values of k for the cyclic shift operation;
- secondly, print r integers k1,k2,…,kr ( 0≤ki≤n−1 ) — all possible values of k in increasing order.
输入输出样例
输入#1
4 4 1 2 3 1 4 3 1 1 2 3 3 1 3 2 1 6 0 1 2 3 4 6 5
输出#1
1 3 1 0 3 0 1 2 0
说明/提示
Consider the example:
- in the first test case, the only possible value for the cyclic shift is 3 . If we shift [1,2,3,4] by 3 positions, we get [2,3,4,1] . Then we can swap the 3 -rd and the 4 -th elements to get the array [2,3,1,4] ;
- in the second test case, the only possible value for the cyclic shift is 0 . If we shift [1,2,3] by 0 positions, we get [1,2,3] . Then we don't change the array at all (we stated that we made at most 1 swap), so the resulting array stays [1,2,3] ;
- in the third test case, all values from 0 to 2 are possible for the cyclic shift:
- if we shift [1,2,3] by 0 positions, we get [1,2,3] . Then we can swap the 1 -st and the 3 -rd elements to get [3,2,1] ;
- if we shift [1,2,3] by 1 position, we get [3,1,2] . Then we can swap the 2 -nd and the 3 -rd elements to get [3,2,1] ;
- if we shift [1,2,3] by 2 positions, we get [2,3,1] . Then we can swap the 1 -st and the 2 -nd elements to get [3,2,1] ;
- in the fourth test case, we stated that we didn't do any swaps after the cyclic shift, but no value of cyclic shift could produce the array [1,2,3,4,6,5] .