有n根棍子,棍子i的長度為ai,從中選出3根棍子組成周長盡量長的三角形,輸出最大周長,若無法組成,則輸出0.
3<=n<=100
1<=ai<=10^6
樸素做法就是n^3;但是n大點的話就死定啦
下面是nlogn的
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define ll long long
#define ul unsigned long long
int cmp(const void*a,const void*b)
{
return *(int *)b-*(int *)a;
}
int a[];
int main()
{
//freopen("in.txt","r",stdin);
int n;
while(~scanf("%d",&n)){
for(int i=;i<n;i++)
scanf("%d",&a[i]);
qsort(a,n,sizeof(a[]),cmp);
for(int i=;i<=n-;i++)
if(a[i]-a[i+]<a[i+])
{
printf("%d\n",a[i]+a[i+]+a[i+]);
break;
}
else if(i==n-)
{
printf("0\n");
}
}
}