#ATarc111c. [ARC111C] Too Heavy
[ARC111C] Too Heavy
题目描述
有 个人,编号为 到 ,以及 个编号同样为 到 的行李。第 个人的体重为 ,第 个行李的重量为 。一开始,第 个人拿着编号为 的行李。你可以进行如下操作若干次(可以为 次),使得最终每个人都拿着与自己编号相同的行李。
- 选择 ,交换第 个人和第 个人手中的行李。
但是,如果某个人拿着的行李重量大于等于自己的体重,他就会感到疲劳,之后不能再参与任何操作(即不能再被选为 或 )。特别地,如果 ,那么这个人一开始就无法参与任何操作。
请判断是否存在满足条件的操作序列。如果存在,请构造一个操作次数最少的方案。
输入格式
输入为标准输入,格式如下:
输出格式
如果无论如何都无法满足条件,输出 -1。如果可以满足条件,请输出如下格式的操作序列:
其中 为操作次数, 表示第 次操作选择的两个人的编号。
如果有多种方案,输出任意一种均可。
样例 1
输入
4
3 4 8 6
5 3 1 3
3 4 2 1
输出
3
3 4
1 3
4 2
样例 2
输入
4
1 2 3 4
4 3 2 1
4 3 2 1
输出
-1
样例 3
输入
1
58
998244353
1
输出
0
说明/提示
限制
- 是 的一个排列
- 输入的所有数均为整数
样例解释 1
初始状态下,第 个人拿着的行李重量分别为 ,所以一开始没有人疲劳。首先让第 个人和第 个人交换行李,此时 号人的行李重量分别为 ,仍然没有人疲劳。接着让第 个人和第 个人交换行李,此时 号人的行李重量分别为 ,此时第 个人疲劳。最后让第 个人和第 个人交换行李,此时 号人的行李重量分别为 ,没有新增疲劳的人。这样所有人都拿到了正确的行李,并且操作次数最少,因此这是一个正确的输出。
样例解释 2
无法通过任何操作满足条件。
样例解释 3
初始状态下已经满足条件。
由 ChatGPT 4.1 翻译