#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<cmath>
using namespace std;
const int maxn=1e5+10;
const double eps=0.00000001;
struct point{
double x,y;
};
int n;
point p[maxn];
bool solve(point a,point b)
{
bool flag=true;
long double A,B,C;
A=b.y-a.y;
B=a.x-b.x;
C=(-A)*a.x+(-B)*a.y;
queue<int>pq;
while(!pq.empty()) pq.pop();
for(int i=1;i<=n;i++)
{
if(fabs(A*p[i].x+B*p[i].y+C)>eps) pq.push(i);
}
if(pq.size()>2) {
int p1=pq.front(); pq.pop();
int p2=pq.front(); pq.pop();
A=p[p2].y-p[p1].y;
B=p[p1].x-p[p2].x;
C=(-A)*p[p1].x+(-B)*p[p1].y;
while(!pq.empty())
{
int t=pq.front();
pq.pop();
if(fabs(A*p[t].x+B*p[t].y+C)>eps) {
flag=false;
break;
}
}
}
return flag;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%lf%lf",&p[i].x,&p[i].y);
}
if(n<=4) printf("YES\n");
else {
if(solve(p[1],p[2])||solve(p[1],p[3])||solve(p[2],p[3])) printf("YES\n");
else printf("NO\n");
}
return 0;
}
Codeforces Educational Codeforces Round 41 (Rated for Div. 2) D - Pair Of Lines 几何问题
最新推荐文章于 2019-06-10 14:16:00 发布