AOJ 0058 - Orthogonal
直線なので内積つかえばよい.
線分ならば交点があるか調べないといけないはず.
汚いコード
#include<iostream> #include<cstdio> struct P{ double x, y; }; P pointToVector(P p1, P p2){ P p = {p2.x-p1.x, p2.y-p1.y}; return p; } double dotProduct(P p1, P p2){ return p1.x*p2.x+p1.y*p2.y; } int main(){ P ps[4]; while(std::cin >> ps[0].x >> ps[0].y, !std::cin.eof()){ for(int i=1;i<4;i++){ std::cin >> ps[i].x >> ps[i].y; } P p1 = pointToVector(ps[0], ps[1]), p2 = pointToVector(ps[2], ps[3]); if(dotProduct(p1, p2) == 0){ puts("YES"); }else{ puts("NO"); } } }