CF1852B Imbalanced Arrays
题目描述
Ntarsis 想出了一个长度为 $n$ 的非负整数数组 $a$。
我们称一个长度为 $n$ 的整数数组 $b$ 是“不平衡数组”,如果它满足以下条件:
- $-n \leq b_i \leq n$,且 $b_i \neq 0$;
- 不存在两个下标 $(i, j)$($1 \leq i, j \leq n$),使得 $b_i + b_j = 0$;
- 对于每个 $1 \leq i \leq n$,恰好有 $a_i$ 个下标 $j$($1 \leq j \leq n$),使得 $b_i + b_j > 0$,其中 $i$ 和 $j$ 不一定不同。
给定数组 $a$,Ntarsis 希望你构造出一个不平衡数组。如果无法构造,请判断其不可能。
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 $t$($1 \leq t \leq 10^5$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($1 \leq n \leq 10^5$)。
接下来一行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \leq a_i \leq n$)。
保证所有测试用例中 $n$ 的总和不超过 $10^5$。
输出格式
对于每个测试用例,如果不存在不平衡数组,输出 "NO"。
否则,输出 "YES"。接下来一行输出 $n$ 个整数 $b_1, b_2, \ldots, b_n$,其中所有 $b_i \neq 0$,即为一个不平衡数组。
说明/提示
对于第一个测试用例,$b = [1]$ 是一个不平衡数组。因为对于 $i = 1$,恰好有一个 $j$($j = 1$)满足 $b_1 + b_j > 0$。
对于第二个测试用例,可以证明不存在不平衡数组。
对于第三个测试用例,$a = [0, 1, 0]$。数组 $b = [-3, 1, -2]$ 是一个不平衡数组。
- 对于 $i = 1$ 和 $i = 3$,不存在 $j$ 使得 $b_i + b_j > 0$。
- 对于 $i = 2$,仅有 $j = 2$ 满足 $b_2 + b_2 > 0$($1 + 1 = 2$)。
第三个测试用例的另一种输出可以是 $b = [-2, 1, -3]$。
由 ChatGPT 4.1 翻译