#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
#define maxn 1000+10
typedef struct pos{
double left;
double right;
}pos; //记录每个岛屿的圆心左边界和右边界
pos position[maxn];
bool cmp(pos m,pos n){ //按左边界排序
return (m.left < n.left);
}
int main(){
int n,d;
int cases = 1;
while(cin>>n>>d && n && d){
memset(position,0,sizeof(position));
bool flag = true;
for(int i=0;i<n;i++){
double x,y;
cin>>x>>y;
if(y > d)
flag = false;
double temp = sqrt(d*d - y*y);
position[i].left = x - temp;
position[i].right = x + temp;
}
int ans = 0;
if(flag){
sort(position,position+n,cmp);
for(int i = 0; i< n; i++){
ans++;
double cur_right = position[i].right;
for(int j=i+1;j<n;j++){
if(position[j].right < cur_right) //更新右边界
cur_right = position[j].right;
if(position[j].left <= cur_right) //左边界小于当前右边界,可以覆盖
i++;
else
break; //否则进行下一个雷达的安装
}
}
cout<<"Case "<<cases<<": "<<ans<<endl;
}
else
cout<<"Case "<<cases<<": "<<-1<<endl;
cases++;
}
return 0;
}
poj 1328 Radar Installation
最新推荐文章于 2025-03-30 11:00:00 发布