Radar Installation(贪心,sort)

在poj上C++可以AC,但G++不行。杭电上更是好多的TLE,结果把cin改成scanf便可以轻松AC。

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <cstring>
#include <cmath>
using namespace std;
#define N 1010
structx_y
{
    double x,y;
};
bool greater_(x_y ex1,x_y ex2)
{
    return ex1.x<ex2.x;
}
int main()
{
    double d1;
    int n,k=1,i,j;
    while (scanf("%d%lf",&n,&d1)!=EOF)
    {
        if (n==0 && d1==0)
            break;
        x_y loc [N];
        double left[N],right[N],a,b,pi,temp;
        int counter=1,flag=0;
        for (i=0;i<n;i++)
        {

            scanf("%lf%lf",&a,&b);
            loc[i].x=a;
            loc[i].y=b;
            if(b>d1) flag=1;
        }
        if(flag)
        {
            printf("Case %d: %d\n",k,-1);
            k++;
            continue;
        }
        sort (loc,loc+n,greater_);
        for (j=0;j<n;j++)
        {
            pi= d1*d1-loc[j].y*loc[j].y;
            left[j]=loc[j].x - sqrt(pi);
            right[j]=loc[j].x + sqrt(pi);
        }
        temp=right[0];
        for (j=1;j<n;j++)
        {
            if (temp<left[j])
            {
                temp=right[j];
                counter++;
            }
            else
            {
                if (temp>right[j])
                {
                    temp=right[j];
                }
            }
        }
        printf("Case %d: %d\n",k,counter);
        k++;
    }
    return 0;
}
posted @ 2013-11-16 12:38  单调的幸福  阅读(166)  评论(0编辑  收藏  举报