签到题,找能组成三角形的最大周长。直接排序更新满足条件的三条边之和即可。
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int a[1005];
int main(){
int n,ans,cir;
while(~scanf("%d",&n)){
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
ans=-1,cir=0;
if(n<3);
else if(n==3){
if(a[0]+a[1]<a[2]);
else
ans=a[0]+a[1]+a[2];
}
else{
for(int i = 0 ;i < n - 2;i ++){
cir= a[i] + a[i + 1] + a[i + 2];
if(a[i] + a[i + 1] > a[i + 2])//如果可以构成三角形,则更新最大周长
ans = max(ans,cir);
}
}
printf("%d\n",ans);
}
return 0;
}