QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#884235 | #9880. Origami Warp | sszcdjr | WA | 23ms | 5724kb | C++20 | 2.0kb | 2025-02-05 22:36:58 | 2025-02-05 22:36:59 |
Judging History
answer
#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[2005],b[2005],c[2005],d[2005],tp[2005];
int x[1000005],y[1000005],cx,cy;
void solve(){
int n,ok=0; cin>>n; cx=cy=0;
int c1=-1,c2=-1;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i]>>c[i]>>d[i];
if(a[i]==c[i]){
x[++cx]=a[i]; tp[i]=1;
}
else if(b[i]==d[i]){
y[++cy]=b[i]; tp[i]=2;
}
else{
int p;
if((a[i]-b[i])==(c[i]-d[i])){
p=a[i]-b[i];
y[++cy]=-p;
x[++cx]=p;
tp[i]=3;
c1=i;
}
else if((a[i]+b[i])==(c[i]+d[i])){
p=a[i]+b[i];
y[++cy]=p;
x[++cx]=p;
tp[i]=4;
c2=i;
}
else ok=1;
}
}
int q; cin>>q;
if(ok){
while(q--){
int px,py,qx,qy; cin>>px>>py>>qx>>qy;
cout<<"YES\n";
}
return ;
}
int gx=0,gy=0;
if(cx>1){
for(int i=2;i<=cx;i++){
gx=__gcd(gx,llabs(x[i]-x[1])*2);
}
}
if(cy>1){
for(int i=2;i<=cy;i++){
gy=__gcd(gy,llabs(y[i]-y[1])*2);
}
}
while(q--){
int px,py,qx,qy; cin>>px>>py>>qx>>qy;
bool ok=0;
for(int op1=0;op1<=1;op1++){
if(op1) px=-px;
for(int op2=0;op2<=1;op2++){
if(op2) py=-py;
for(int op3=0;op3<=(c1==-1?0:1);op3++){
if(op3){
int p=(a[c1]-b[c1])*2-(px-py),o=px+py; //px-py=p px+py=o
px=(p+o)/2,py=(o-p)/2;
}
for(int op4=0;op4<=(c2==-1?0:1);op4++){
if(op4){
int p=(a[c2]+b[c2])*2-(px+py),o=px-py; //px+py=p px-py=o
px=(p+o)/2,py=(p-o)/2;
}
bool tmpok=1;
if(!gx) tmpok&=(px==qx);
else tmpok&=((px-qx)%gx==0);
if(!gy) tmpok&=(py==qy);
else tmpok&=((py-qy)%gy==0);
ok|=tmpok;
if(op4){
int p=(a[c2]+b[c2])*2-(px+py),o=px-py; //px+py=p px-py=o
px=(p+o)/2,py=(p-o)/2;
}
}
if(op3){
int p=(a[c1]-b[c1])*2-(px-py),o=px+py; //px-py=p px+py=o
px=(p+o)/2,py=(o-p)/2;
}
}
if(op2) py=-py;
}
if(op1) px=-px;
}
if(ok) cout<<"YES\n";
else cout<<"NO\n";
}
}
signed main(){
int t; cin>>t;
while(t--) solve();
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 5556kb
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: 23ms
memory: 5724kb
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]