QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#824755 | #9770. Middle Point | ucup-team4474# | WA | 0ms | 3832kb | C++20 | 2.6kb | 2024-12-21 15:36:40 | 2024-12-21 15:36:44 |
Judging History
answer
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cassert>
#include<cstdio>
#include<cctype>
#include<vector>
#include<bitset>
#include<random>
#include<ctime>
#include<queue>
#include<cmath>
#include<list>
#include<map>
#include<set>
#define pb push_back
#define mp make_pair
#define pii pair<int,int>
#define pll pair<long long,long long>
#define FF fflush(stdout)
#define inf 0x3f3f3f3f
#define endl "\n"
#define fi first
#define se second
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
//char buf[1<<20],*p1,*p2;
//#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?EOF:*p1++)
inline int read()
{
int s=0,f=1;
char x=getchar();
while(!isdigit(x))f=(x=='-'?-1:1),x=getchar();
while(isdigit(x))s=s*10+x-'0',x=getchar();
return s*f;
}
const int p=1e9+7;
//ll ksm(int a,int b){ll ans=1,bs=a;while(b){if(b&1)ans=ans*bs%p;bs=bs*bs%p;b>>=1;}return ans;}
mt19937 rd(time(0));
#define reaD read
void dfs(vector<pair<pii,int>> &ans,int l,int r,int x,int d,int op=0)
{
int mid=(l+r)>>1;
ans.pb(mp(mp(l*d,r*d),op));
if(mid==x)
{
return ;
}
if(mid<x)dfs(ans,mid,r,x,d,0);
else dfs(ans,l,mid,x,d,1);
}
vector<pair<pii,int>> sol(int a,int x)
{
vector<pair<pii,int>> ans;
if(x==0||x==a)return ans;
int aa=a;
while(aa%2==0)aa>>=1;
if(x%aa)
{
puts("-1");
exit(0);
}
dfs(ans,0,a/aa,x/aa,aa);
return ans;
}
int main()
{
int a=read(),b=read(),x=read(),y=read();
vector<pair<pii,int>> a1=sol(a,x),a2=sol(b,y);
vector<pii> A1,A2;
if(a1.size()<a2.size())
{
int T=a2.size()-a1.size();
int now=T;
while(T--)
{
if(now>=a2.size()||a2[now].se==1)
{
A1.pb(mp(a,a));
}
else
{
A1.pb(mp(0,0));
}
}
}
if(a1.size()>a2.size())
{
int T=a1.size()-a2.size();
int now=T;
while(T--)
{
if(now>=a1.size()||a1[now].se==1)
{
A2.pb(mp(b,b));
}
else
{
A2.pb(mp(0,0));
}
}
}
for(auto o:a1)A1.pb(o.fi);
for(auto o:a2)A2.pb(o.fi);
printf("%d\n",(int)(A1.size()));
for(int i=0;i<A1.size();i++)
{
printf("%d %d %d %d\n",A1[i].fi,A2[i].fi,A1[i].se,A2[i].se);
}
return 0;
}
/*
128 256
21 192
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3772kb
input:
2 2 1 1
output:
1 0 0 2 2
result:
ok correct!
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 3832kb
input:
8 8 5 0
output:
3 0 8 8 8 4 8 8 8 4 8 6 8
result:
wrong answer target point have not been added into S