Submission #1263531

#TimeUsernameProblemLanguageResultExecution timeMemory
1263531vivkostovMechanical Doll (IOI18_doll)C++20
0 / 100
160 ms327680 KiB
//#pragma once
//#include "grader.cpp"
#include "doll.h"
#include<bits/stdc++.h>
using namespace std;
int n,m,a[200005],x[1000005],y[1000005];
vector<int>c,X,Y;
void create(int l,int r,int h,int st,int level)
{
    if(l+1==r)
    {
        x[h]=a[st+2];
        st+=(1<<level);
        if(st==n-1)y[h]=0;
        else y[h]=a[st+2];
        return;
    }
    int mid=(l+r)/2;
    create(l,mid,h*2,st,level+1);
    create(mid+1,r,h*2+1,st+(1<<level),level+1);
    x[h]=-h*2;
    y[h]=-(h*2+1);
}
void check(int l,int r,int h)
{
    X.push_back(x[h]);
    Y.push_back(y[h]);
    //cout<<x[h]<<" "<<y[h]<<" "<<l<<" "<<r<<endl;
    if(l+1==r)return;
    int mid=(l+r)/2;
    check(l,mid,h*2);
    check(mid+1,r,h*2+1);
}
void create_circuit(int M, std::vector<int> A)
{
    n=A.size();
    m=M;
    for(int i=1;i<=n;i++)
    {
        a[i]=A[i-1];
    }
    create(1,n,1,0,0);
    c.push_back(a[1]);
    for(int i=1;i<=m;i++)
    {
        c.push_back(-1);
    }
    check(1,n,1);
    answer(c,X,Y);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...