结果与本地不一致
查看原帖
结果与本地不一致
54372
A_Đark_Horcrux楼主2021/10/17 21:02

样例二 5tyjMQ.png 5t6EM4.png

#include<cstdio>
#include<cmath>
#define db double
using namespace std;
struct pt
{
	int n; db x,y;
}p[100010];
int n;
bool Just_do_it(pt a,pt b)
{
	db a1,b1,c1,a2,b2,c2;
	a1=b.y-a.y,b1=a.x-b.x,c1=a.y*(b.x-a.x)+a.x*(a.y-b.y);
	for(int i=1;i<=3;i++)
		if(p[i].n!=a.n&&p[i].n!=b.n)
		{
			pt c=p[i];
			a2=a.y-c.y,b1=c.x-a.x,c1=c.y*(a.x-c.x)+c.x*(c.y-a.y);
		}
	//printf("l1:%lfx+%lfy+%lf=0\n",a1,b1,c1);
	//printf("l2:%lfx+%lfy+%lf=0\n",a2,b2,c2);
	for(int j=4;j<=n;j++)
		if(!(a1*p[j].x+b1*p[j].y+c1==0||a2*p[j].x+b2*p[j].y+c2==0))
			return 0;
	return 1;
}
int main()
{
	scanf("%d",&n);
	if(n<=4) return !puts("YES");
	for(int i=1;i<=n;i++)
		scanf("%lf %lf",&p[i].x,&p[i].y),p[i].n=i;
	if(Just_do_it(p[1],p[2])||Just_do_it(p[2],p[3])||Just_do_it(p[1],p[3]))
		puts("YES");
	else puts("NO");
	return 0; 
}
2021/10/17 21:02
加载中...