CF1189B.Number Circle

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

Number Circle

题目描述

给定 nn 个数 a1,a2,,ana_1, a_2, \ldots, a_n,你能否将它们排成一个环,使得每个数都严格小于它相邻两个数之和?

例如,对于数组 [1,4,5,6,7,8][1, 4, 5, 6, 7, 8],左图的排列是合法的,而右图的排列不合法,因为 54+15 \ge 4 + 18>1+68 > 1 + 6

输入格式

第一行包含一个整数 nn3n1053 \le n \le 10^5),表示数字的个数。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n1ai1091 \leq a_i \le 10^9),表示这些数。给定的数不一定各不相同(即允许有重复)。

输出格式

如果无解,第一行输出 "NO"。

如果有解,第一行输出 "YES"。第二行输出 nn 个数,表示数组在环中的排列顺序。你输出的第一个和最后一个元素在环中视为相邻。如果有多种方案,输出任意一种即可。你可以从任意一个元素开始输出环。

说明/提示

第一组样例中一种可能的排列如下:

4<2+34 < 2 + 3

2<4+32 < 4 + 3

3<4+23 < 4 + 2

第二组样例中也有一种可能的排列。

在第三组样例中,无论如何排列 13,8,513, 8, 51313 的相邻数都是 8855,但 138+513 \ge 8 + 5

第四组样例无解。

由 ChatGPT 4.1 翻译

样例

3
2 4 3
YES
4 2 3 
5
1 2 3 4 4
YES
4 4 2 1 3
3
13 8 5
NO
4
1 10 100 1000
NO

在线编程 IDE

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