这个题就是组三角形,从给出的数组里任选两个和未知的边组三角形。
任意两边之和大于第三边,记住这个就可以了。
代码:
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<cmath> 5 #include<algorithm> 6 using namespace std; 7 const int N=1e6+10; 8 int a[N]; 9 int main(){ 10 int n; 11 while(~scanf("%d",&n)){ 12 for(int i=0;i<n;i++) 13 scanf("%d",&a[i]); 14 sort(a,a+n); 15 if(n==2){ 16 printf("YES\n"); 17 printf("%d\n",a[1]-a[0]+1); 18 } 19 else{ 20 int cnt=a[0]+a[1]-1; 21 if(cnt<a[n-1]){ 22 if(cnt+a[0]>a[n-1]){ 23 printf("YES\n"); 24 printf("%d\n",cnt); 25 } 26 else printf("NO\n"); 27 } 28 else{ 29 if(a[0]+a[n-1]>cnt){ 30 printf("YES\n"); 31 printf("%d\n",cnt); 32 } 33 else printf("NO\n"); 34 } 35 } 36 } 37 return 0; 38 }