CF1189B Number Circle

水题

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<deque>

using namespace std;
const int inf = 1e5 + 5;
int n, s[inf],cnt;
deque<int> q;
int main()
{
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)scanf("%d", &s[i]);
	sort(s, s + n + 1);
    for(int i=n;i>=1;i--)
    {
        if(cnt)q.push_front(s[i]),cnt^=1;
        else q.push_back(s[i]),cnt^=1;
    }
    cnt=0;
    deque<int>::iterator it;
    for(it=q.begin();it!=q.end();it++)
    s[++cnt]= *it ;
    for(int i=2;i<=n-1;i++)
    if(s[i-1]+s[i+1]<=s[i]){cout<<"NO";return 0;}
    if(s[n-1]+s[1]<=s[n]){cout<<"NO";return 0;}
    cout<<"YES"<<endl;
	for (int i = 1; i <= n; i++)cout << s[i] << " ";
	return 0;
}