CF1416B Make Them Equal

题目描述

给定一个由 $n$ 个正整数组成的数组 $a$,编号从 $1$ 到 $n$。你最多可以进行 $3n$ 次如下操作: 1. 选择三个整数 $i$、$j$ 和 $x$($1 \le i, j \le n$,$0 \le x \le 10^9$); 2. 执行 $a_i := a_i - x \cdot i$,$a_j := a_j + x \cdot i$。 每次操作后,数组中的所有元素都必须是非负数。 你能否找到不超过 $3n$ 次操作的一个操作序列,使得最终数组中所有元素都相等?

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。接下来有 $t$ 组测试用例。 每组测试用例的第一行包含一个整数 $n$($1 \le n \le 10^4$),表示数组的长度。第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^5$),表示数组的元素。 保证所有测试用例中 $n$ 的总和不超过 $10^4$。

输出格式

对于每个测试用例,按如下格式输出答案: - 如果不存在合适的操作序列,输出 $-1$; - 否则,输出一个整数 $k$($0 \le k \le 3n$),表示操作的次数。接下来输出 $k$ 行,每行三个整数 $i$、$j$ 和 $x$($1 \le i, j \le n$,$0 \le x \le 10^9$),表示第 $m$ 次操作。 如果有多种可行的操作序列,输出任意一种即可。注意你不需要使 $k$ 最小。

说明/提示

由 ChatGPT 4.1 翻译