raoyueyang • 2年前
using namespace std;
int n,d,ans,cnt=1,flag=0; struct node { double x,y; bool vis=0; } a[1005]; bool cmp(node p,node q) { return p.y<q.y; } int main() { while(cin>>n>>d) {
if(n==0 && d==0)
break;
for(int i=0; i<n; i++)
{
double p,q,m;
cin>>p>>q;
if(q>d)
{
flag=1;
}
m=sqrt(d*d-q*q);
a[i].x=p-m,a[i].y=p+m;
}
sort(a,a+n,cmp);
for(int i=0; i<n; i++)
{
if(a[i].vis)
continue;
ans++;
a[i].vis=1;
for(int j=0; j<n; j++)
if(!a[j].vis&&a[i].y>=a[j].x)
a[j].vis=1;
}
printf("Case %d: %d\n",cnt++,flag?-1:ans);
memset(a,0,sizeof(a));
flag=n=d=ans=0;
} return 0; }`
评论: