題目鏈接:http://codeforces.com/problemset/problem/1189/B
codepage=1208,AC代碼:
#include<bits/stdc++.h> using 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; }
?