P15576 [USACO26FEB] Good Cyclic Shifts G

Description

For a permutation $p_1,p_2,\dots,p_N$ of $1\dots N$ ($1\le N\le 2\cdot 10^5$), let $f(p)=\sum_{i=1}^N \frac{|p_i-i|}{2}$. A permutation is good if it can be turned into the identity permutation using at most $f(p)$ swaps of adjacent elements. Given a permutation, find which cyclic shifts of it are good.

Input Format

The input consists of $T$ ($1\le T\le 10^5$) independent tests. Each test is specified as follows: The first line contains $N$. The second line contains $p_1,p_2,\dots,p_N$ ($1\le p_i\le N$), which is guaranteed to be a permutation of $1\dots N$. It is guaranteed that the sum of $N$ over all tests does not exceed $10^6$.

Output Format

For each test, output two lines: On the first line, output the number of good cyclic shifts $k$. Then output a line with $k$ space-separated integers $s$ ($0\le s

Explanation/Hint

Consider the second test case, where $p = [1, 2, 4, 3]$. - $f(p) = (|1 - 1| + |2 - 2| + |4 - 3| + |3 - 4|) / 2 = 1$. Since $p$ can be turned into the identity permutation in one move by swapping $p_3$ and $p_4$, $p$ is good. - Cyclically shifting $p$ to the right $1$ time, we get $q = [3, 1, 2, 4]$. $f(q) = (|3 - 1| + |1 - 2| + |2 - 3| + |4 - 4|) / 2 = 2$. Since $q$ can be turned into the identity permutation in two moves by swapping $q_1$ two steps forward, $q$ is good. It can be seen that the other two cyclic shifts are not good. ### SCORING: - Input 2: $N\le 10$ - Inputs 3-5: $T\le 10, N\le 2000$ - Inputs 6-11: No additional constraints. Problem credits: Akshaj Arora