题目大意:以x轴为分界,y>0部分为海,y<0部分为陆地,给出一些岛屿坐标(在海中),再给出雷达可达到范围,雷达只可以安在陆地上,问最少多少雷达可以覆盖所以岛屿。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int n, m;
struct node
{
double a;
double b;
}e[1005];
bool cmp(node x, node y)
{
return x.a < y.a;
}
int main()
{
int c = 1;
while (cin >> n >> m,n,m)
{
double a, b;
int counting = 1;
for (int i = 0; i < n; i++)
{
cin >> a >> b;
if (b > m)
{
counting = -1;
}
double t = sqrt(m*m - b * b);
e[i].a = a - t;
e[i].b = a + t;
}
if (counting != -1)
{
sort(e, e + n, cmp);
double s = e[0].b;
for (int i = 1; i < n; i++)
{
if (e[i].a > s)
{
counting++;
s = e[i].b;
}
else if (e[i].b < s)
{
s = e[i].b;
}
}
}
printf("Case %d: %d\n",c++, counting);
}
}