CF1427A.Avoiding Zero

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Avoiding Zero

题目描述

给定一个长度为 nn 的整数数组 a1,a2,,ana_1,a_2,\dots,a_n

你需要构造一个长度为 nn 的整数数组 b1,b2,,bnb_1,b_2,\dots,b_n,使得:

  • 数组 bb 是数组 aa 的一个重排,也就是说,bb 包含与 aa 相同的元素,并且每个元素出现的次数也相同。换句话说,多重集 {a1,a2,,an}\{a_1,a_2,\dots,a_n\}{b1,b2,,bn}\{b_1,b_2,\dots,b_n\} 相等。例如,如果 a=[1,1,0,1]a=[1,-1,0,1],那么 b=[1,1,1,0]b=[-1,1,1,0]b=[0,1,1,1]b=[0,1,-1,1] 都是 aa 的重排,但 b=[1,1,1,0]b=[1,-1,-1,0]b=[1,0,2,3]b=[1,0,2,-3] 不是 aa 的重排。
  • 对于所有 k=1,2,,nk=1,2,\dots,nbb 的前 kk 项的和都不为零。形式化地说,对于所有 k=1,2,,nk=1,2,\dots,n,都必须满足 b1+b2++bk0b_1+b_2+\cdots+b_k\not=0

如果不存在满足要求的数组 b1,b2,,bnb_1,b_2,\dots,b_n,你需要输出 NO。

输入格式

每个测试点包含多组测试数据。第一行包含一个整数 tt1t10001\le t \le 1000)——表示测试用例的组数。

每组测试数据的第一行包含一个整数 nn1n501\le n\le 50)——数组 aa 的长度。

每组测试数据的第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\dots,a_n50ai50-50\le a_i\le 50)——数组 aa 的元素。

输出格式

对于每组测试数据,如果不存在满足要求的数组 b1,b2,,bnb_1,b_2,\dots,b_n,输出一行 NO。

否则,输出一行 YES,接着输出一行 nn 个整数 b1,b2,,bnb_1,b_2,\dots,b_n

如果存在多个满足要求的数组 b1,b2,,bnb_1,b_2,\dots,b_n,你可以输出任意一个。

说明/提示

第一个测试用例说明:一个满足条件的数组为 b=[1,2,3,4]b=[1,-2,3,-4]。对于该数组,有:

  • bb 的第一个元素是 11
  • 前两个元素的和为 1-1
  • 前三个元素的和为 22
  • 前四个元素的和为 2-2

第二个测试用例说明:由于 aa 的所有元素都是 00,所以任何 aa 的重排 bb 也都全为 00,因此显然无法满足第二个条件(例如 b1=0b_1=0)。因此答案为 NO。

第三个测试用例说明:一个满足条件的数组为 b=[1,1,1,1,1]b=[1, 1, -1, 1, -1]。对于该数组,有:

  • bb 的第一个元素是 11
  • 前两个元素的和为 22
  • 前三个元素的和为 11
  • 前四个元素的和为 22
  • 前五个元素的和为 11

第四个测试用例说明:一个满足条件的数组为 b=[40,13,40,0,9,31]b=[-40,13,40,0,-9,-31]。对于该数组,有:

  • bb 的第一个元素是 40-40
  • 前两个元素的和为 27-27
  • 前三个元素的和为 1313
  • 前四个元素的和为 1313
  • 前五个元素的和为 44
  • 前六个元素的和为 27-27

由 ChatGPT 4.1 翻译

样例

4
4
1 -2 3 -4
3
0 0 0
5
1 -1 1 -1 1
6
40 -31 -9 0 13 -40
YES
1 -2 3 -4
NO
YES
1 1 -1 1 -1
YES
-40 13 40 0 -9 -31

在线编程 IDE

建议全屏模式获得最佳体验