CF53D Physical Education
题目描述
Vasya 是一名学校体育老师。和其他体育老师不同,Vasya 不喜欢学生按照身高排队。相反,他要求孩子们按如下顺序站队:$a_1, a_2, \dots, a_n$,其中 $a_i$ 是队伍中第 $i$ 个学生的身高,$n$ 是队中的学生人数。孩子们很难记住这种奇怪的排列方式,而今天他们排成了如下顺序:$b_1, b_2, \dots, b_n$,这让 Vasya 十分生气。现在 Vasya 想要重新排列孩子们,使他们最终的顺序为 $a_1, a_2, \dots, a_n$。每次操作中,Vasya 可以交换队伍中相邻的两个人。请帮助 Vasya 找出一组交换操作的序列,使得最终队伍顺序符合 Vasya 的要求。不要求操作次数最少。
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 300$),表示学生人数。
第二行包含 $n$ 个用空格分隔的整数 $a_i$($1 \leq a_i \leq 10^9$),表示每个位置应站学生的身高。
第三行包含 $n$ 个用空格分隔的整数 $b_i$($1 \leq b_i \leq 10^9$),表示初始排列中每个位置的学生身高。
可能有些学生的身高相同。保证一定能够通过交换操作达到目标顺序,即 $a$ 和 $b$ 作为多重集是相同的。
输出格式
第一行输出一个整数 $k$($0 \leq k \leq 10^6$),表示你所用的交换操作次数。不要求 $k$ 最小,但必须不超过 $10^6$。
接下来 $k$ 行,每行包含两个空格分隔的整数,依次为 $p_i, p_i+1$($1 \leq p_i \leq n-1$),表示 Vasya 应当交换位于 $p_i$ 和 $p_{i+1}$ 位置的学生。
说明/提示
无。
由 ChatGPT 5 翻译