题目链接:
AC代码:
#includeusing namespace std;const int maxn = 1e5 + 5;int a[maxn];int b[maxn];int c[maxn];bool check(int i){ if(a[i] < a[i-1]+a[i+1]) return true; else return false;}int main(){ int n; cin >> n; for(int i = 0;i < n;i++) { cin >> a[i]; } sort(a,a+n); int b1 = 0,c1 = 0; for(int i = 0;i < n;i++) { if(i%2 == 0) c[c1++] = a[i]; else b[b1++] = a[i]; } for(int i = 0;i < c1;i++) { a[i] = c[i]; } for(int i = c1;i < n;i++) { a[i] = b[--b1]; } bool flag = true; for(int i = 1;i < n-1;i++) { if(!check(i)) flag = false; } if(!flag || a[n-1] >= a[0] + a[n-2] || a[0] >= a[n-1] + a[1]) cout << "NO"; else { cout << "YES" << endl; for(int i = 0;i < n;i++) { cout << a[i] << " "; } } return 0;}