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

Задача . B. Числа на окружности


Вам дано \(n\) чисел \(a_1, a_2, \ldots, a_n\). Возможно ли расставить их по окружности таким образом, чтобы каждое число было строго меньше суммы своих соседей?

К примеру, для массива \([1, 4, 5, 6, 7, 8]\), расстановка слева удовлетворяет условию, в то время как расстановка справа нет, так как \(5\ge 4 + 1\) и \(8> 1 + 6\).

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

Первая строка содержит одно целое число \(n\) (\(3\le n \le 10^5\)) — количество чисел.

Вторая строка содержит \(n\) целых чисел \(a_1, a_2, \ldots, a_n\) (\(1 \leq a_i \le 10^9\)) — сами числа. Заданные числа не обязательно различны.

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

Если решения не существует, в первой строке выведите «NO».

Если оно существует, в первой строке выведите «YES». После чего, во второй строке выведите \(n\) чисел — элементы массива в порядке в котором они будут стоять на окружности. Первый и последний элементы, которые вы выведете, считаются соседями на окружности. Если существует несколько решений, выведите любое из них. Вы можете выводить круг, начиная с любого из чисел.

Примечание

Одна из возможных расстановок указана в первом примере:

\(4< 2 + 3\);

\(2 < 4 + 3\);

\(3< 4 + 2\).

Одна из возможных расстановок указана в втором примере.

При любой расстановке чисел \(13, 8, 5\) на окружности в третьем примере, \(13\) будет иметь соседей \(8\) и \(5\), но \(13\ge 8 + 5\).

В четвертом примере нет нужной расстановки.


Примеры
Входные данныеВыходные данные
1 3
2 4 3
YES
4 2 3
2 5
1 2 3 4 4
YES
4 4 2 1 3
3 3
13 8 5
NO
4 4
1 10 100 1000
NO

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

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