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 翻译