#762
Platinum III
좋은 회전
원문: English
시간 제한
2s
메모리 제한
1024MB
제출
0
정답
0
맞힌 사람
0
정답 비율
0.0%

문제

11부터 NN (1N21051 \le N \le 2 \cdot 10^5)까지의 수로 이루어진 순열 p1,p2,,pNp_1, p_2, \dots, p_N에 대하여, f(p)=i=1Npii2f(p) = \sum_{i=1}^N \frac{|p_i - i|}{2}라고 정의한다. 만약 인접한 두 원소를 맞바꾸는 연산을 최대 f(p)f(p)번 사용하여 해당 순열을 항등 순열(1,2,,N1, 2, \dots, N)로 만들 수 있다면, 그 순열을 좋은 순열이라고 한다.

순열 하나가 주어질 때, 이 순열을 오른쪽으로 회전시켜 얻을 수 있는 순열들 중 어떤 것이 좋은 순열인지 구하시오.

입력

입력은 TT (1T1051 \le T \le 10^5)개의 독립적인 테스트 케이스로 구성된다.

각 테스트 케이스의 첫째 줄에는 NN이 주어진다.

둘째 줄에는 11부터 NN까지의 수로 이루어진 순열 p1,p2,,pNp_1, p_2, \dots, p_N (1piN1 \le p_i \le N)이 공백으로 구분되어 주어진다.

모든 테스트 케이스에 대한 NN의 합은 10610^6을 넘지 않는다.

출력

각 테스트 케이스마다 두 줄에 걸쳐 결과를 출력한다.

첫째 줄에는 좋은 순열이 되는 회전 횟수의 개수 kk를 출력한다.

둘째 줄에는 좋은 순열을 만드는 회전 횟수 ss (0s<N0 \le s < N)를 오름차순으로 공백으로 구분하여 출력한다. 여기서 ss번 오른쪽으로 회전시킨 순열은 pp의 마지막 ss개 원소를 맨 앞으로 옮긴 순열 pNs+1,pNs+2,,pN,p1,p2,,pNsp_{N-s+1}, p_{N-s+2}, \dots, p_N, p_1, p_2, \dots, p_{N-s}를 의미한다.

예제 입력 1

3
5
5 4 3 2 1
4
1 2 4 3
5
1 2 3 4 5

예제 출력 1

0

2
0 1
5
0 1 2 3 4
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출
제출 내역이 없습니다.
맞은 사람
아직 맞은 사람이 없습니다.
난이도 투표
Platinum III1명 투표· 약 2개월 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
제출 내역이 없습니다.