QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#813575#9880. Origami Warpucup-team1004#WA 5ms3600kbC++171.9kb2024-12-14 10:36:512024-12-14 10:36:51

Judging History

你现在查看的是最新测评结果

  • [2024-12-14 10:36:51]
  • 评测
  • 测评结果:WA
  • 用时:5ms
  • 内存:3600kb
  • [2024-12-14 10:36:51]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#ifdef DEBUG
#include"debug.h"
#else
#define debug(...) void()
#endif
#define all(x) (x).begin(),(x).end()
template<class T>
auto ary(T *a,int l,int r){
	return vector<T>{a+l,a+1+r};
}
using ll=long long;
using ull=unsigned long long;
const int N=2e3+10;
int T,n,m;
void work(){
	scanf("%d",&n);
	vector<int>t[4];
	int flag=0;
	for(int i=1,ax,ay,bx,by;i<=n;i++){
		scanf("%d%d%d%d",&ax,&ay,&bx,&by);
		int dx=bx-ax,dy=by-ay;
		if(dx==dy)t[3].push_back(ay-ax);
		else if(dx==-dy)t[1].push_back(ax+ay);
		else if(!dx)t[0].push_back(ax);
		else if(!dy)t[2].push_back(ay);
		else flag=1;
	}
	scanf("%d",&m);
	if(flag){
		for(;m--;){
			scanf("%*d%*d%*d%*d");
			puts("Yes");
		}
		return;
	}
	if(t[1].empty()&&t[3].empty()){
		int dx=0,dy=0;
		for(int x:t[0])dx=__gcd(dx,abs(x));
		for(int x:t[2])dy=__gcd(dy,abs(x));
		auto getx=[&](int x){
			if(!dx)return x;
			return abs((x%(dx*2)+dx*2)%(dx*2)-dx);
		};
		auto gety=[&](int y){
			if(!dy)return y;
			return abs((y%(dy*2)+dy*2)%(dy*2)-dy);
		};
		for(int ax,ay,bx,by;m--;){
			scanf("%d%d%d%d",&ax,&ay,&bx,&by);
			puts(getx(ax)==getx(bx)&&gety(ay)==gety(by)?"Yes":"No");
		}
		return;
	}
	int d=0;
	for(int c:{0,1,2,3}){
		for(int x:t[c])d=__gcd(d,abs(x));
	}
	int o1=0,o2=0;
	for(int x:t[1]){
		x=(x%(d*2)+d*2)%(d*2);
		(x?o1:o2)=1;
	}
	for(int x:t[3]){
		x=(x%(d*2)+d*2)%(d*2);
		(x?o2:o1)=1;
	}
	auto get=[&](int x,int y){
		x=(x%(d*2)+d*2)%(d*2);
		y=(y%(d*2)+d*2)%(d*2);
		if(x>d)x=d*2-x;
		if(y>d)y=d*2-y;
		if(o1){
			if(x+y>d)swap(x,y),x=d-x,y=d-y;
		}
		if(o2){
			if(y>x)swap(x,y);
		}
		return make_pair(x,y);
	};
	for(int ax,ay,bx,by;m--;){
		scanf("%d%d%d%d",&ax,&ay,&bx,&by);
		puts(get(ax,ay)==get(bx,by)?"Yes":"No");
	}
}
int main(){
	for(scanf("%d",&T);T--;)work();
	return 0;
}
#ifdef DEBUG
#include"debug.hpp"
#endif

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3600kb

input:

2
3
0 0 1 0
0 0 0 1
0 2 2 0
4
1 0 2 3
1 -2 -1 2
1 1 -1 0
3 3 3 3
3
0 0 1 0
0 0 0 1
-2 1 2 3
2
2 1 -1 5
-1 -1 3 3

output:

Yes
Yes
No
Yes
Yes
Yes

result:

ok 6 token(s): yes count is 5, no count is 1

Test #2:

score: -100
Wrong Answer
time: 5ms
memory: 3596kb

input:

10
550
0 0 1 0
0 0 0 1
1070451 -76747419 -475756 34109964
39212129 -40187389 32082651 -32880591
-42770825 49053520 -51324990 58864224
301020 -10533714 602040 -21067428
-55137616 74952624 -24122707 32791773
1629975 -29851650 -478126 8756484
80523100 20960200 -77302176 -20121792
-64028006 61179727 -18...

output:

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
...

result:

wrong answer expected NO, found YES [2nd token]