Quipex icon

6355

Quipex | PRO | 03/07/17 01:42:42 PM UTC | 0 ⭐ | 421 👁️ | Never ⏰ | []
C++ |

1.2 KB

|

None

|

0 👍

/

0 👎

#include <iostream>
#include <cmath>
 
using namespace std;
const double eps = 1e-6;
struct pt {double x, y;};
double len(pt a, pt b){
    double a1 = sqrt(a.x*a.x+a.y*a.y);
    double b1 = sqrt(b.x*b.x+b.y*b.y);
    return a1*b1;
}
double scalmltpl(pt a, pt b){
    return a.x*b.x + b.y*a.y;
}
double angle(pt a, pt b){
    return acos(scalmltpl(a,b)/len(a,b));
}
bool d_eq(double a, double b){
    //cout<<a<<";"<<b<<endl;
    return abs(a-b)<eps;
}
int main()
{
    const double pi = 2*asin(1.0);
    int n;
    cin>>n;
    pt* points = new pt[n+1];
    const double ang = pi*(n-2)/n;
 
    int i;
    for (i = 0; i<n; i++)
    {
        cin >> points[i].x >> points[i].y;
    }
    points[n].x = points[0].x;
    points[n].y = points[0].y;
 
    pt line0, line1;
    line0.x = points[1].x - points[0].x;
    line0.y = points[1].y - points[0].y;
    for (i = 1; i < n; i++)
    {
        line1.x = points[i+1].x - points[i].x;
        line1.y = points[i+1].y - points[i].y;
        if(!d_eq(ang, angle(line1, line0)))
        {
            cout<<"NO";
            return 0;
        }
        line0.x = line1.x;
        line0.y = line1.y;
    }
    cout <<"YES";
    return 0;
}

Comments