33,007
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
int comp(const void *a,const void *b)
{
return *(int*)a-*(int*)b;
}
int main()
{
int n,d;
for(int j=1;scanf("%d %d",&n,&d)!=0&&(n!=0||d!=0);j++)
{
int a[1000],b[1000],flag=0;
for(int i=0;i<n;i++)
scanf("%d %d",&a[i],&b[i]);
for(int i=0;i<n;i++)
{
if(b[i]>d||b[i]<0||d<0)//判断是否有解
{
flag=1;
break;
}
}
if(flag==1)
{
printf("Case %d: -1\n",j);
continue;
}
qsort(a,n,sizeof(int),comp);
int sum=1;
for(int i=a[0]+d;i<a[n-1]-d;i+=d)//在岛的右侧放一个雷达,长度为雷达检测范围
{
sum++;
for(int k=0;k<n;k++)// 寻找在雷达范围外的下一个岛屿
{
if(a[k]>i)
{
i=a[k];
break;
}
}
}
printf("Case %d: %d\n",j,sum);
}
return 0;
}