#include <iostream>
#include <cmath>
using namespace std;
const int maxn=1111;
const double eps=1e-8;
int sgn(double x)
{
if(fabs(x)<eps)
return 0;
if(x<0)
return -1;
else
return 1;
}
struct Point
{
double x,y;
Point(){}
Point(double _x,double _y)
{
x=_x;
y=_y;
}
Point operator -(const Point &b)const
{
return Point(x-b.x,y-b.y);
}
double operator ^(const Point &b)const
{
return x*b.y-y*b.x;
}
double operator *(const Point &b)const
{
return x*b.x+y*b.y;
}
};
Point p[maxn],ans[maxn];
double dist(Point a,Point b)
{
return sqrt((a-b)*(a-b));
}
int main()
{
double x1,y1,r;
while(1)
{
cin>>x1>>y1>>r;
Point p1=Point(x1,y1);
if(r<0)
break;
int n;
cin>>n;
int cont=0;
for(int i=0;i<n;i++)
{
cin>>p[i].x>>p[i].y;
double d=dist(p[i],p1);
if(r-d>=0)
{
ans[cont++]=p[i];
}
}
int max1=0;
for(int i=0;i<cont;i++)
{
int cont_max=1;
for(int j=0;j<cont;j++)
{
if(j==i)
continue;
if(sgn((ans[i]-ans[j])^(p1-ans[j]))>=0)
{
cont_max++;
}
}
if(cont_max>max1)
max1=cont_max;
}
cout<<max1<<endl;
}
return 0;
}
Transmitters POJ - 1106
猜你喜欢
转载自blog.csdn.net/leekerian/article/details/81368193
今日推荐
周排行