HDU 6374(拼三角形 **)

时间:2021-05-26 15:16:11

题意是在给定的线段长中挑选出能拼成三角形的最长的三条边,输出三角形的周长。
先对所有边排序,从大到小,满足两较短边之和大于第三边就输出,若从未输出过就输出 -1

 #include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[];
int main()
{
int n;
bool f;
while(~scanf("%d",&n))
{
f = true;
for(int i = ; i < n; i++)
{
scanf("%d",&a[i]);
}
sort(a,a+n);
for(int i = n-; i >= ; i--)
{
if(a[i-] + a[i-] > a[i])
{
f = ;
printf("%d\n",a[i-]+a[i-]+a[i]);
break;
}
}
if(f) puts("-1");
}
return ;
}