WA求助
  • 板块CF13B Letter A
  • 楼主hxhhxh
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/8/10 15:48
  • 上次更新2023/11/4 11:11:18
查看原帖
WA求助
429147
hxhhxh楼主2021/8/10 15:48
#include<bits/stdc++.h>
#define int long long
using namespace std;
int T;
struct point{
	int x,y;
	bool operator ==(const point rees)const{
		return this->x==rees.x&&this->y==rees.y;
	}
};
struct lll{
	point l,r;
	bool operator ==(const lll rees)const{
		return (this->l==rees.l&&this->r==rees.r)||(this->l==rees.r&&this->r==rees.l);
	}
}a,b,c;
int lenf(lll eif){
	return (eif.l.x-eif.r.x)*(eif.l.x-eif.r.x)+(eif.l.y-eif.r.y)*(eif.l.y-eif.r.y);
}
bool sdgx(point a,point b,point c){
    if((c.y-a.y)*(b.x-a.x)==(b.y-a.y)*(c.x-a.x)) return true;
    return false;
}
bool on(point x,lll y){
	if(sdgx(x,y.l,y.r)&&x.x>=min(y.l.x,y.r.x)&&x.x<=max(y.l.x,y.r.x)&&x.y>=min(y.l.y,y.r.y)&&x.y<=max(y.l.y,y.r.y)) return true;
	return false;
}
bool a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12;
signed main(){
	scanf("%lld",&T);
	while(T--){
		scanf("%lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld",&a.l.x,&a.l.y,&a.r.x,&a.r.y,&b.l.x,&b.l.y,&b.r.x,&b.r.y,&c.l.x,&c.l.y,&c.r.x,&c.r.y);
		if(a==b||b==c||c==a) printf("NO\n");
		else{
			a1=(a.l==b.l);
			a2=(a.l==b.r);
			a3=(a.l==c.l);
			a4=(a.l==c.r);
			a5=(a.r==b.l);
			a6=(a.r==b.r);
			a7=(a.r==c.l);
			a8=(a.r==c.r);
			a9=(b.l==c.l);
			a10=(b.l==c.r);
			a11=(b.r==c.l);
			a12=(b.r==c.r);
			int ggp=a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12;
			if(ggp>=2) printf("NO\n");
			else if(ggp==0) printf("NO\n");
			else{
				if(a2) swap(b.l,b.r);
				if(a3) swap(b,c);
				if(a4) swap(c.l,c.r),swap(b,c);
				if(a5) swap(a.l,a.r);
				if(a6) swap(a.l,a.r),swap(b.l,b.r);
				if(a7) swap(a.l,a.r),swap(b,c);
				if(a8) swap(a.l,a.r),swap(c.l,c.r),swap(b,c);
				if(a9) swap(a,c);
				if(a10) swap(c.l,c.r),swap(a,c);
				if(a11) swap(a,c),swap(b.l,b.r);
				if(a12) swap(c.l,c.r),swap(b.l,b.r),swap(a,c);
				if(lenf(a)+lenf(b)<lenf((lll){a.r,b.r})) printf("NO\n");
				else if(sdgx(a.l,a.r,b.r)) printf("NO\n");
				else{
					if(!(on(c.l,a)||on(c.l,b))) printf("NO\n");
					else if(!(on(c.r,a)||on(c.r,b))) printf("NO\n");
					else{
						if(on(c.r,a)) swap(c.l,c.r);
						int u=lenf((lll){a.l,c.l}),d=lenf((lll){a.r,c.l});
						if(u>d*16||u*16<d) printf("NO\n");
						else{
							u=lenf((lll){b.l,c.r}),d=lenf((lll){b.r,c.r});
							if(u>d*16||u*16<d) printf("NO\n");
							else printf("YES\n");
						}
					}
				}
			}
		}
	}
	return 0;
}
2021/8/10 15:48
加载中...