QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#814123 | #9880. Origami Warp | ucup-team3586# | WA | 3ms | 3664kb | C++23 | 2.6kb | 2024-12-14 15:26:27 | 2024-12-14 15:26:28 |
Judging History
answer
//Author: Kevin
#include<bits/stdc++.h>
//#pragma GCC optimize("O2")
using namespace std;
#define ll long long
#define int ll
#define ull unsigned ll
#define pb emplace_back
#define mp make_pair
#define ALL(x) (x).begin(),(x).end()
#define rALL(x) (x).rbegin(),(x).rend()
#define srt(x) sort(ALL(x))
#define rev(x) reverse(ALL(x))
#define rsrt(x) sort(rALL(x))
#define sz(x) (int)(x.size())
#define inf 0x3f3f3f3f
#define pii pair<int,int>
#define lb(v,x) (int)(lower_bound(ALL(v),x)-v.begin())
#define ub(v,x) (int)(upper_bound(ALL(v),x)-v.begin())
#define uni(v) v.resize(unique(ALL(v))-v.begin())
#define longer __int128_t
void die(string S){puts(S.c_str());exit(0);}
ll normalize(ll a,ll b)
{
if(!b) return a;
return (a%b+b)%b;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int allPassO=1;
int allSlopeOk=1;
int allAlign=1;
ll gcdX=0,gcdY=0;
ll gcdK=0;
for(int i=1;i<=n;i++)
{
ll a,b,c,d;
cin>>a>>b>>c>>d;
if(a*d!=b*c) allPassO=0;
if(a!=c&&b!=d&&abs(a-c)!=abs(b-d)) allSlopeOk=0;
if(a!=c&&b!=d) allAlign=0;
if(a==c) gcdX=__gcd(gcdX,2*abs(a-c));
if(b==d) gcdY=__gcd(gcdY,2*abs(b-d));
if(a+b==c+d) gcdK=__gcd(gcdK,abs(a+b));
if(a-b==c-d) gcdK=__gcd(gcdK,abs(a-b));
}
int q;
cin>>q;
for(int i=1;i<=q;i++)
{
ll a,b,c,d;
cin>>a>>b>>c>>d;
if(allPassO&&allSlopeOk)
{
if(allAlign)
cout<<(abs(a)==abs(c)&&abs(b)==abs(d))?"Yes\n":"No\n";
else
cout<<((abs(a)==abs(c)&&abs(b)==abs(d))||(abs(b)==abs(c)&&abs(a)==abs(d)))?"Yes\n":"No\n";
}
else if(allPassO)
cout<<(a*a+b*b==c*c+d*d)?"Yes\n":"No\n";
else if(allSlopeOk)
{
if(allAlign)
{
int okX=1;
int okY=1;
if(gcdX) okX=((a-c)%gcdX==0||(a+c)%gcdX==0);
else okX=(a-c==0||a+c==0);
if(gcdY) okY=((b-d)%gcdY==0||(b+d)%gcdY==0);
else okY=(b-d==0||b+d==0);
cout<<(okX&&okY)?"Yes\n":"No\n";
}
else
{
int flag=0;
for(int dx=-1;dx<=1;dx+=2)
for(int dy=-1;dy<=1;dy+=2)
{
int na=normalize(dx*a,gcdX);
int nb=normalize(dy*b,gcdY);
int nc=normalize(c,gcdX);
int nd=normalize(d,gcdY);
int d1=na-nb;
int d2=nc-nd;
ll d3=__gcd(gcdX,gcdY);
ll g=__gcd(d3,gcdK);
if(!g)
{
if(d1==d2) flag=1;
}
else
{
if((d1-d2)%g==0) flag=1;
}
}
cout<<(flag?"Yes\n":"No\n");
}
}
else
cout<<"Yes\n";
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3656kb
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: 3ms
memory: 3664kb
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:
100110101001111101001110100111101000001100011100000011111001110111101011100111000101101110010001000001010010011110100010110000101011101111010011010110010000000011000010000110101001101101011101100001011000111101011111100100111001010111101101101100100110001010000010100100010101000001111101110101110010...
result:
wrong output format YES or NO expected, but 100110101001111101001110100111...0110001110110011011110100011110 found [1st token]