CF1374F Cyclic Shifts Sorting

题目描述

给定一个由 $n$ 个整数构成的数组 $a$。 每次操作,你可以选择一个下标 $i$($1 \le i \le n-2$),将区间 $[a_i, a_{i+1}, a_{i+2}]$ 循环右移一次(即将该区间替换为 $[a_{i+2}, a_i, a_{i+1}]$)。 你的任务是在不超过 $n^2$ 次操作内将初始数组排序,或者判断无法通过上述操作将其排序。 你需要回答 $t$ 组独立的测试用例。

输入格式

输入的第一行包含一个整数 $t$($1 \le t \le 100$),表示测试用例的数量。接下来有 $t$ 组测试用例。 每组测试用例的第一行包含一个整数 $n$($3 \le n \le 500$),表示数组 $a$ 的长度。第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 500$),其中 $a_i$ 表示数组 $a$ 的第 $i$ 个元素。 保证所有测试用例中 $n$ 的总和不超过 $500$。

输出格式

对于每组测试用例,输出一行答案:如果无法通过题目描述的操作将给定数组排序,输出 $-1$。否则,第一行输出操作次数 $ans$,第二行输出 $ans$ 个整数 $idx_1, idx_2, \dots, idx_{ans}$($1 \le idx_i \le n-2$),其中 $idx_i$ 表示第 $i$ 次操作所选区间的左端点下标。请按照操作执行的顺序输出下标。

说明/提示

由 ChatGPT 4.1 翻译