其他分享
首页 > 其他分享> > Codeforces - 1189B - Number Circle - 贪心

Codeforces - 1189B - Number Circle - 贪心

作者:互联网

https://codeforc.es/contest/1189/problem/B
优先考虑最大的元素怎么构造。拿两个次大的围着他就很好,但是其他的怎么安排呢?就直接降序排列就可以了。
a数组还开错了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int n;
int a[100005];

int main() {
#ifdef Yinku
    freopen("Yinku.in", "r", stdin);
    //freopen("Yinku.out", "w", stdout);
#endif // Yinku
    while(~scanf("%d", &n)) {
        for(int i=1;i<=n;++i){
            scanf("%d",&a[i]);
        }
        sort(a+1,a+1+n);
        swap(a[n],a[n-1]);

        bool fail=false;
        for(int i=2;i<=n-1;++i){
            if(a[i]>=a[i-1]+a[i+1])
                fail=true;
        }
        if(a[1]>=a[n]+a[2])
            fail=true;
        if(a[n]>=a[n-1]+a[1])
            fail=true;
        if(fail)
            puts("NO");
        else{
            puts("YES");
            for(int i=1;i<=n;++i){
                printf("%d%c",a[i]," \n"[i==n]);
            }
        }
    }
}

标签:puts,int,Yinku,Codeforces,1189B,long,fail,Circle,true
来源: https://www.cnblogs.com/Yinku/p/11185382.html