QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#824755#9770. Middle Pointucup-team4474#WA 0ms3832kbC++202.6kb2024-12-21 15:36:402024-12-21 15:36:44

Judging History

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

  • [2024-12-21 15:36:44]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3832kb
  • [2024-12-21 15:36:40]
  • 提交

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