Source Code
Problem: 1269 | User: Praesidio | |
Memory: 156K | Time: 0MS | |
Language: C++ | Result: Accepted |
- Source Code
#include <cstdio> const double eps=1e-8; struct point{ double x,y; point() { } point(double _x,double _y) : x(_x),y(_y) { } }; double operator * (point A,point B) { return (A.x*B.y-A.y*B.x); } double operator ^ (point A,point B) { return (A.x*B.x+A.y*B.y); } point operator - (point A,point B) { return point(A.x-B.x,A.y-B.y); } int n; int x1,y1,x2,y2; int sgn(double d) { return (d>eps?1:(d<-eps?-1:0)); } int main() { scanf("%d",&n); printf("INTERSECTING LINES OUTPUT\n"); for (int i=0;i<n;i++) { point a[5]; int x,y; for (int j=1;j<=4;j++) { scanf("%d%d",&x,&y); a[j]=point(x,y); } double d1,d2; d1=(a[2]-a[1])*(a[3]-a[1]); d2=(a[2]-a[1])*(a[4]-a[1]); if (sgn(d1-d2)==0) { if ((a[1].y-a[2].y)*(a[1].x-a[3].x)-(a[1].y-a[3].y)*(a[1].x-a[2].x)==0) printf("LINE\n"); else printf("NONE\n"); continue; } point node=point((a[3].x*d2-a[4].x*d1)/(d2-d1) , (a[3].y*d2-a[4].y*d1)/(d2-d1)); printf("POINT %.2lf %.2lf\n",node.x,node.y); } printf("END OF OUTPUT\n"); return 0; }