#include #include #include #include #include #define eps 1e-8 #define N 20010 using namespace std; int Sig(double a) { return a<-eps?-1:a>eps; } struct Point { double x,y; Point(){} Point(double x0,double y0):x(x0),y(y0){} bool operator <(Point pt) { if(pt.x==x) return y(Point pt) { if(pt.x==x) return y>pt.y; return x>pt.x; } bool operator ==(Point pt) { return !Sig(pt.x-x) && !Sig(pt.y-y); } Point operator +(Point pt) { return Point(x+pt.x,y+pt.y); } Point operator -(Point pt) { return Point(x-pt.x,y-pt.y); } Point operator *(double t) { return Point(x*t,y*t); } void Input() { scanf("%lf%lf",&x,&y); } }; struct Range { Point a,b; Range(){} Range(Point a0,Point b0):a(a0),b(b0){} bool operator <(Range r) { if(a==r.a) return b=0) return ; double h=sqrt(r*r-d*d); Point tmp=Point(e.y-s.y,s.x-e.x); Point o=Intersection(p,p+tmp,s,e); Point p1,p2; p1=o+(e-s)*(h/Dis(s,e)); p2=o-(e-s)*(h/Dis(s,e)); if(p2