#include #include #include #include using namespace std; struct Point { double x,y; Point():x(0),y(0) { } Point(double _x,double _y):x(_x),y(_y) { } }; typedef Point Vector; inline Vector operator+(const Vector &a,const Vector &b) { return Vector(a.x+b.x,a.y+b.y); } inline Vector operator-(const Vector &a,const Vector &b) { return Vector(a.x-b.x,a.y-b.y); } inline Vector operator*(const Vector &a,double b) { return Vector(a.x*b,a.y*b); } inline Vector operator/(const Vector &a,double b) { return Vector(a.x/b,a.y/b); } inline double Dot(const Vector &a,const Vector &b) { return a.x*b.x+a.y*b.y; } inline double Cross(const Vector &a,const Vector &b) { return a.x*b.y-a.y*b.x; } inline double Length(const Vector &a) { return sqrt(Dot(a,a)); } const double eps=1e-8; inline int dcmp(const double &v) { return fabs(v)0?1:-1); } struct Line { Point p; Vector v; double ang; Line(Point _p=Point(),Vector _v=Vector()):p(_p),v(_v) { ang=atan2(v.y,v.x); } }; inline bool operator<(const Line &a,const Line &b) { return a.ang=0;i--) scanf("%lf%lf",&p[i].x,&p[i].y); for(int i=0;i