CF341E Candies Game

题目描述

Iahub 正在玩一个非常独特的游戏。一开始,他有 $n$ 个盒子,编号为 $1, 2, 3, \ldots, n$。每个盒子中都有一些糖果,具体由序列 $a_1, a_2, \ldots, a_n$ 描述。数值 $a_k$ 表示第 $k$ 个盒子中的糖果数量。 游戏的目标是将所有糖果移动到恰好两个盒子中,剩下的 $n-2$ 个盒子中必须没有任何糖果。Iahub 可以进行若干次(可以为零)操作。每次操作中,他选择两个不同的盒子 $i$ 和 $j$,要求 $a_i \leq a_j$,然后从盒子 $j$ 向盒子 $i$ 移动恰好 $a_i$ 颗糖果。显然,如果两个盒子中的糖果数相等,则第 $j$ 个盒子会被清空。 你的任务是给出一组操作,使得 Iahub 达成游戏目标。如果对于给定的盒子配置无法完成目标,则输出 $-1$。注意,如果存在方案,你不需要使操作次数最少。

输入格式

输入的第一行为整数 $n$($3 \leq n \leq 1000$)。下一行包含 $n$ 个非负整数 $a_1, a_2, \ldots, a_n$,表示每个盒子中的糖果数。据保证所有糖果总数不超过 $10^6$。

输出格式

如果不存在可行解,则输出 $-1$。否则,第一行输出整数 $c$($0\leq c\leq 10^6$),表示你为方案所用的操作次数。接下来的 $c$ 行,每行包含两个整数 $i$ 和 $j$($1\leq i, j \leq n, i\neq j$):表示第 $k$ 次操作将第 $j$ 号盒子的糖果移动到第 $i$ 号盒子中。

说明/提示

对于第一个样例,第一次操作后,各盒中的糖果数为 3、12 和 3;第二次操作后,各盒中糖果数为 6、12 和 0。此时所有糖果都集中在 2 个盒子中。 对于第二个样例,可以观察到初始配置不可能满足要求,因为所有糖果都已经在一个盒子中了,而目标是分在两个盒子,并且任何操作都不会改变现状,所以无解。 对于第三个样例,所有糖果已经在两个盒子中,因此无需任何操作。 由 ChatGPT 5 翻译