Олимпиадный тренинг

Задача . A. Избегая ноля


Вам дан массив из \(n\) целых чисел \(a_1,a_2,\dots,a_n\).

Вы должны создать массив из \(n\) целых чисел \(b_1,b_2,\dots,b_n\) такой, что:

  • Массив \(b\)  — это перестановка массива \(a\), т.е. он содержит одни и те же значения, и каждое из них встречается одинаковое количество раз в этих массивах. Другими словами, мультимножества \(\{a_1,a_2,\dots,a_n\}\) и \(\{b_1,b_2,\dots,b_n\}\) должны быть равны.

    Например, если \(a=[1,-1,0,1]\), то \(b=[-1,1,1,0]\) и \(b=[0,1,-1,1]\)  — это перестановки \(a\), но \(b=[1,-1,-1,0]\) и \(b=[1,0,2,-3]\)  — это не перестановки \(a\).

  • Для всех \(k=1,2,\dots,n\) сумма первых \(k\) элементов \(b\) не равна нулю. Формально, для всех \(k=1,2,\dots,n\) должно выполняться \(\)b_1+b_2+\cdots+b_k\not=0\,.\(\)

Если массив \(b_1,b_2,\dots, b_n\) с необходимыми свойствами не существует, необходимо вывести NO.

Входные данные

Каждый тест содержит несколько наборов входных данных. В первой строке содержится целое число \(t\) (\(1\le t \le 1000\))  — количество наборов входных данных. Описание наборов входных данных приведено ниже.

Первая строка каждого набора входных данных содержит одно целое число \(n\) (\(1\le n\le 50\))  — длину массива \(a\).

Вторая строка каждого набора входных данных содержит \(n\) целых чисел \(a_1,a_2,\dots, a_n\) (\(-50\le a_i\le 50\))  — элементы массива \(a\).

Выходные данные

Для каждого набора входных данных, если не существует массива \(b_1,b_2,\dots,b_n\) с требуемыми свойствами, выведите одну строку со словом NO.

В противном случае выведите строку со словом YES, а затем строку с \(n\) целыми числами \(b_1,b_2,\dots,b_n\).

Если существует более одного массива \(b_1,b_2,\dots,b_n\), удовлетворяющего требуемым свойствам, то можно вывести любой из них.

Примечание

Пояснение первого набора входных данных: Массив с нужными свойствами равен \(b=[1,-2,3,-4]\). Для этого массива все выполняется:

  • Первый элемент \(b\) равен \(1\).
  • Сумма первых двух элементов \(b\) равна \(-1\).
  • Сумма первых трех элементов \(b\) равна \(2\).
  • Сумма первых четырех элементов \(b\) равна \(-2\).

Пояснение второго набора входных данных: Поскольку все значения в \(a\) равны \(0\), любая перестановка \(b\) массива \(a\) будет иметь все элементы, равные \(0\), и поэтому для нее явно не сможет быть выполнено второе свойство из условия (например, потому что \(b_1=0\)). Следовательно, в данном случае ответом будет NO.

Пояснение третьего набора входных данных:. Массив с нужными свойствами равен \(b=[1, 1, -1, 1, -1]\). Для этого массива все выполняется:

  • Первый элемент \(b\) равен \(1\).
  • Сумма первых двух элементов \(b\) равна \(2\).
  • Сумма первых трех элементов \(b\) равна \(1\).
  • Сумма первых четырех элементов \(b\) равна \(2\).
  • Сумма первых пяти элементов \(b\) равна \(1\).

Пояснение четвертого набора входных данных: Массив с нужными свойствами равен \(b=[-40,13,40,0,-9,-31]\). Для этого массива все выполняется:

  • Первый элемент \(b\) равен \(-40\).
  • Сумма первых двух элементов \(b\) равна \(-27\).
  • Сумма первых трех элементов \(b\) равна \(13\).
  • Сумма первых четырех элементов \(b\) равна \(13\).
  • Сумма первых пяти элементов \(b\) равна \(4\).
  • Сумма первых шести элементов \(b\) равна \(-27\).

Примеры
Входные данныеВыходные данные
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

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя