#P14770. [ICPC 2024 Seoul R] Pair Sorting

[ICPC 2024 Seoul R] Pair Sorting

Description

nn 个箱子排成一行,地上有 2n2n 个球。球的编号从 11nn,对于每个 ii (1in1 \leq i \leq n),恰好有两个编号为 ii 的球。此外,对于 1in1 \leq i \leq n,第 ii 个箱子记为 BiB_i,每个箱子 BiB_i 最多可以容纳两个球。初始时,对于 1in1 \leq i \leq n,箱子 BiB_i 中包含两个编号为 n+1in+1-i 的球。初始的箱子配置参见下面的图 F.1。

:::align{center}

图 F.1. 箱子的初始配置 :::

你只能交换相邻两个箱子中的球,这代表一次交换操作。请注意,箱子不是栈,对于相邻的箱子 BiB_iBi+1B_{i+1},你可以交换 BiB_i 中两个球中的一个与 Bi+1B_{i+1} 中的一个球。参见下面的图 F.2。该图展示了两次交换操作。

:::align{center}

图 F.2. 相邻箱子之间的交换操作 :::

通过这些交换操作,你需要对球进行排序。排序完成后,对于 1in1 \leq i \leq n,箱子 BiB_i 必须包含两个编号为 ii 的球。特别地,当给定一个关于 nn 的函数 Bound\text{Bound} 时(尤其是 Bound=0.7n2\text{Bound} = 0.7n^2),交换操作的总数不应超过 Bound\text{Bound}

给定 nn 个箱子和 2n2n 个球,请编写一个程序,找到一种球的排序方法,使得交换操作的总数不超过 Bound=0.7n2\text{Bound} = 0.7n^2

Input Format

你的程序需要从标准输入读取数据。输入恰好包含一行。该行包含一个整数 nn (3n1003 \leq n \leq 100),表示有 nn 个箱子和 2n2n 个球。

Output Format

你的程序需要向标准输出写入结果。令 SS 为你的排序方法中交换操作的总数。输出恰好 S+1S+1 行。第一行包含 SS。接下来的 SS 行,每行包含三个整数 j,a,bj, a, b,表示一次交换操作:交换箱子 BjB_j 中的球 aa 与箱子 Bj+1B_{j+1} 中的球 bb,其中 1jn11 \leq j \leq n-11a,bn1 \leq a, b \leq n。你的排序方法中的交换操作应按顺序逐行打印。数字 SS 必须满足 S0.7n2S \leq 0.7n^2

3
6
1 3 2
2 3 1
1 2 1
1 3 2
2 3 1
1 2 1
3
5
1 3 2
2 3 1
1 3 1
2 3 1
1 2 1

Hint

翻译由 DeepSeek V3 完成