Arpa and an exam about geometry(codeforces 851B)

Arpa and an exam about geometry

time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Arpa is taking a geometry exam. Here is the last problem of the exam.

You are given three points a, b, c.

Find a point and an angle such that if we rotate the page around the point by the angle, the new position of a is the same as the old position of b, and the new position of b is the same as the old position of c.

Arpa is doubting if the problem has a solution or not (i.e. if there exists a point and an angle satisfying the condition). Help Arpa determine if the question has a solution or not.

Input

The only line contains six integers ax, ay, bx, by, cx, cy (|ax|, |ay|, |bx|, |by|, |cx|, |cy| ≤ 109). It's guaranteed that the points are distinct.

Output

Print "Yes" if the problem has a solution, "No" otherwise.

You can print each letter in any case (upper or lower).

Examples
Input
Copy
0 1 1 1 1 0
Output
Copy
Yes
Input
Copy
1 1 0 0 1000 1000
Output
Copy
No
Note

In the first sample test, rotate the page around (0.5, 0.5) by .

In the second sample test, you can't find any solution.

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
struct Point{
    int x,y;
    Point(){}
    Point(int a,int b):x(a),y(b){}
    inline void input(){
        scanf("%d%d", &x, &y);
    }
    Point operator-(const Point &a)const{
        return Point(x - a.x, y - a.y);
    }
    bool operator==(const Point &a)const{
        if((x - a.x)==0 && (y - a.y)==0) return 1;
        else return 0;
    }
    Point operator/(const double &a){
        return Point(x/a, y/a);
    }
    bool pdk(const Point &a){
        return (1ll*x * a.y - 1ll*y * a.x)==0;
    }
    void output(){
        printf("x = %d  y = %d\n", x, y);
    }
    long long dis(){
        return 1ll*x*x + 1ll*y*y;
    }
};
struct Line{
    Point s,e;
    Line(){}
    Line(const Point &a, const Point &b):s(a),e(b){}
    Line(const Line &a){
        s = a.s, e = a.e;
    }
};
int main(){
    Point a,b,c;
    a.input();
    b.input();
    c.input();
    if( (b-a).pdk(c-b) || (b-a).dis()!= (c-b).dis()) puts("No");
    else puts("Yes");
    return 0;
}
扫描二维码关注公众号,回复: 7456853 查看本文章

猜你喜欢

转载自www.cnblogs.com/LS-Joze/p/11666387.html
今日推荐