C - Triangles

 Gym - 100971C 

题意:找一个数能够满足在给定的n个数里面随便找两个数构成三角形。

&:找到临界值,也就是两边之差最大的和两边之和最小的。 

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;


ll a[200005];
int main()
{
    ll n;
    while(scanf("%lld", &n) != EOF)
    {
        for(int i = 0; i < n; i ++)
        {
            scanf("%lld", &a[i]);
        }
        sort(a,a+n);
        ll Min = a[n - 1] - a[0];
        ll Max = a[0] + a[1];

        if(Max <= Min + 1) printf("NO\n");
        else printf("YES\n%lld\n",Min+ 1);
    }
    return 0;
}