题目链接:http://acm.tju.edu.cn/toj/showp1809.html
Time Limit: 1.0 Seconds Memory Limit: 65536K
Total Runs: 3056 Accepted Runs: 770
The wires can be combined at any angle, but may not intersect. Beware of floating point errors.
Input specifications
Each data set consists of a number 0 < K ≤ 20 on a line by itself, followed by a line of K space-separated numbers ai. Each number is in the range 0 < ai < 107, and has at most 3 digits after the decimal point. The input will be terminated by a zero on a line by itself.
Output specifications
For each test case, there should be one word on a line by itself: "YES" if it is possible to make a simple connected figure out of the given arcs, and "NO" if it isn't.
Sample Input
1 4.000 2 1.000 1.000 3 1.455 2.958 4.424 7 1.230 2.577 3.411 2.968 5.301 4.398 6.777 0
Sample Output
NO YES NO YES
Source: Nordic Collegiate Contest 2005
与构成多边形的条件差不多,对于半圆,要注意的是两个半圆也是可以闭合的,还有就是等于也是可以的。
#include <stdio.h>
#include <algorithm>
using namespace std;
int main(){
double wire[21];
int n;
while(~scanf("%d",&n),n){
bool flag=false;
for(int i=0;i<n;i++)
scanf("%lf",&wire[i]);
sort(wire,wire+n);
double sum=wire[0];
for(int i=1;i<n;i++){
if(wire[i]<=sum){
flag=true;
break;
}
sum+=wire[i];
}
if(flag) printf("YES\n");
else printf("NO\n");
}
}