#include #include #include using namespace std; int p[2][2005]; int N,R; double RR; struct _a { int who, e; double a; bool operator<(const struct _a& b) const { return a RR) continue; double angle=atan2(dx, dy); double delta=M_PI_2l-asin(sqrt(dist)/(double)(2*R)); double addon=0; if (angle-delta < 0) addon=2*M_PIl; a[len].who=j; a[len].e=1; a[len].a=angle-delta+addon; len++; a[len].who=j; a[len].e=0; a[len].a=angle+delta+addon+1e-6; len++; a[len].who=j; a[len].e=1; a[len].a=2*M_PIl+angle-delta+addon; len++; a[len].who=j; a[len].e=0; a[len].a=2*M_PIl+angle+delta+addon+1e-6; len++; } sort(a, a+len); // for (int i=0;ibest) best=num; } } printf("It is possible to cover %d points.\n", best+1); } return 0; }