CF1148C Crazy Diamond
题目描述
给定一个长度为 $n$ 的排列 $p$,排列中的数字为 $1$ 到 $n$,其中 $n$ 是一个偶数。
你的目标是将该排列排序。为此,你可以进行零次或多次如下操作:
- 选择两个下标 $i$ 和 $j$,满足 $2 \cdot |i - j| \geq n$,然后交换 $p_i$ 和 $p_j$。
你不需要最小化操作次数,但操作次数不能超过 $5 \cdot n$。可以证明,总是存在一种方案满足要求。
输入格式
第一行包含一个整数 $n$($2 \leq n \leq 3 \times 10^5$,$n$ 为偶数),表示排列的长度。
第二行包含 $n$ 个两两不同的整数 $p_1, p_2, \ldots, p_n$($1 \le p_i \le n$),表示给定的排列。
输出格式
第一行输出一个整数 $m$($0 \le m \le 5 \cdot n$),表示需要进行的交换次数。
接下来的 $m$ 行,每行输出两个整数 $a_i, b_i$($1 \le a_i, b_i \le n$,$|a_i - b_i| \ge \frac{n}{2}$),表示在第 $i$ 次操作中交换的下标。
注意,不需要最小化操作次数。可以证明总是存在解。
说明/提示
在第一个样例中,当交换位置 $1$ 和 $2$ 的元素时,数组变为有序。
在第二个样例中,注意不需要最小化交换次数。
在第三个样例中,首先交换位置 $1$ 和 $5$ 的元素,数组变为 $[4, 5, 3, 1, 2, 6]$。然后交换位置 $2$ 和 $5$ 的元素,数组变为 $[4, 2, 3, 1, 5, 6]$,最后交换位置 $1$ 和 $4$ 的元素,数组变为有序的 $[1, 2, 3, 4, 5, 6]$。
由 ChatGPT 4.1 翻译