这是代码
#include<bits/stdc++.h>
using namespace std;
int n,d;
struct node
{
int left,right;
};
node a[1005];
bool cmp(node x,node y)
{
return x.right<y.right;
}
long long sum,r;
int main()
{
scanf("%d %d",&n,&d);
for (int i=1;i<=n;i++)
{
int x,y;
scanf("%d %d",&x,&y);
if (y>d)
{
printf("-1\n");
return 0;
}
int m;
m=sqrt(d*d-y*y);
a[i].left=x-m;
a[i].right=x+m;
}
sort(a+1,a+n+1,cmp);
sum=0;
r=-LONG_LONG_MAX;
for (int i=1;i<=n;i++)
{
if (a[i].left>r)
{
sum++;
r=a[i].right;
}
}
printf("%lld\n",sum);
return 0;
}
输入这组数据因为数据过大所以放在这个链接里 答案是 5 而我的答案是 6