CF1798D.Shocking Arrangement

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given an array a1,a2,,ana_1, a_2, \ldots, a_n consisting of integers such that a1+a2++an=0a_1 + a_2 + \ldots + a_n = 0 .

You have to rearrange the elements of the array aa so that the following condition is satisfied:

max1lrnal+al+1++ar<max(a1,a2,,an)min(a1,a2,,an)\max\limits_{1 \le l \le r \le n} \lvert a_l + a_{l+1} + \ldots + a_r \rvert < \max(a_1, a_2, \ldots, a_n) - \min(a_1, a_2, \ldots, a_n)

where x|x| denotes the absolute value of xx .More formally, determine if there exists a permutation p1,p2,,pnp_1, p_2, \ldots, p_n that for the array ap1,ap2,,apna_{p_1}, a_{p_2}, \ldots, a_{p_n} , the condition above is satisfied, and find the corresponding array.Recall that the array p1,p2,,pnp_1, p_2, \ldots, p_n is called a permutation if for each integer xx from 11 to nn there is exactly one ii from 11 to nn such that pi=xp_i = x.

输入格式

Each test contains multiple test cases. The first line contains the number of test cases tt ( 1t500001 \le t \le 50\,000 ). The description of the test cases follows.

The first line of each test case contains a single integer nn ( 1n3000001 \le n \le 300\,000 ) — the length of the array aa .

The second line of each test case contains nn integers a1,a2,,ana_1, a_2, \ldots, a_n ( 109ai109-10^9 \le a_i \le 10^9 ) — elements of the array aa . It is guaranteed that the sum of the array aa is zero, in other words: a1+a2++an=0a_1 + a_2 + \ldots + a_n = 0 .

It is guaranteed that the sum of nn over all test cases does not exceed 300000300\,000 .

输出格式

For each test case, if it is impossible to rearrange the elements of the array aa in the required way, print "No" in a single line.

If possible, print "Yes" in the first line, and then in a separate line nn numbers — elements a1,a2,,ana_1, a_2, \ldots, a_n rearranged in a valid order ( ap1,ap2,,apna_{p_1}, a_{p_2}, \ldots, a_{p_n} ).

If there are several possible answers, you can output any of them.

输入输出样例

  • 输入#1

    7
    4
    3 4 -2 -5
    5
    2 2 2 -3 -3
    8
    -3 -3 1 1 1 1 1 1
    3
    0 1 -1
    7
    -3 4 3 4 -4 -4 0
    1
    0
    7
    -18 13 -18 -17 12 15 13

    输出#1

    Yes
    -5 -2 3 4
    Yes
    -3 2 -3 2 2
    Yes
    1 1 1 -3 1 1 1 -3
    Yes
    -1 0 1
    Yes
    4 -4 4 -4 0 3 -3
    No
    Yes
    13 12 -18 15 -18 13 -17

说明/提示

In the first test case max(a1,,an)min(a1,,an)=9\max(a_1, \ldots, a_n) - \min(a_1, \ldots, a_n) = 9 . Therefore, the elements can be rearranged as [5,2,3,4][-5, -2, 3, 4] . It is easy to see that for such an arrangement al++ar\lvert a_l + \ldots + a_r \rvert is always not greater than 77 , and therefore less than 99 .

In the second test case you can rearrange the elements of the array as [3,2,3,2,2][-3, 2, -3, 2, 2] . Then the maximum modulus of the sum will be reached on the subarray [3,2,3][-3, 2, -3] , and will be equal to 3+2+3=4=4\lvert -3 + 2 + -3 \rvert = \lvert -4 \rvert = 4 , which is less than 55 .

In the fourth test example, any rearrangement of the array aa will be suitable as an answer, including [1,0,1][-1, 0, 1] .

首页