网易2020 数字圆环(小易的首尾相接)

数字圆环

题目描述:
小易有一个长度为n的数字数组a1,a2,….an
问你是否能用这n个数字构成一个环(首尾相连),使得环中的每一数字都小于它相邻的两个数字的和(每个数字都必须使用并且每个数字只能使用一次)
输入描述
第一行包含一个整数t (1<=t<=10),表示测试用例的组数
每个测试用例的输入如下:
第一行一个整数n,表示数字的个数;
第二行n个整数a1,a2,an,每两个整数之间用一个空格分隔。
输出描述
输出应该包含t行,对于每组用例,若能输出“YES”,否则输出“NO”
思路如下:
首先对数组进行从排序,排序后,看倒数三个数的关系。

#include 
#include 
using namespace  std;
int main()
{
     int t;
     long long n;
     long long a[100005];
     long long i;
     long long max1, max2, max3;
    scanf("%d",&t);
    while(t>0)
    {
    scanf("%lld",&n);
    for(i = 0; i < n; i++)
    {
        scanf("%lld",&a[i]);
    }
    sort(a,a+n);
    max1 = a[n-1];
    max2 = a[n-2];
    max3 = a[n-3];
    if(max1 >= max2 + max3)
    {
        printf("NO\n");
    }
    else
    {
        printf("YES\n");
    }
    t--;
    }
    return  0;
}

你可能感兴趣的:(基本操作)