sicily 1234. Playground

//给出不同半径的半圆,问其中是否有某些半圆可以构成一个封闭的图形
//如果半圆的直径能构成多边形,或者是线段重合在一起,都符合封闭的定义
//于是对各半径排序(升序)后只要检查到某条边 小于或等于 前面边之和
#include<iostream>        
#include
<stdio.h>
#include
<algorithm>
using namespace std;
double ans[20];
int main()
{
    
int n;
    
while(cin>>n&&n)
    {
        
for(int i=0;i<n;++i)
            cin
>>ans[i];
        sort(ans,ans
+n);
        
int tag=0;        //tag=0表示无法围成封闭的图形
        double s=ans[0];
        
for(int i=1;i<n&&!tag;++i)
        {
            
if(s>=ans[i])    //相等是线段重合在一起,大于是围成封闭的多边形
                tag=1;
            
else
                s
+=ans[i];
        }
        
if(tag==1)
            printf(
"YES\n");
        
else
            printf(
"NO\n");
    }
    
return 0;
}

  

posted on 2011-07-05 02:20  sysu_mjc  阅读(146)  评论(0编辑  收藏  举报

导航