Submission #297267

#TimeUsernameProblemLanguageResultExecution timeMemory
297267eohomegrownappsMechanical Doll (IOI18_doll)C++14
37 / 100
125 ms9016 KiB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> adjlist;

vector<int> exitto;
vector<int> switchxto;
vector<int> switchyto;

int sind = 0;

int l2;
int getcomp(int v){
    int ans = 0;
    for (int i = 0; i<l2; i++){
        if ((1<<i)&v){
            ans+=1<<(l2-i-1);
        }
    }
    return ans;
}

void create_circuit(int m, std::vector<int> a) {
    int n = a.size();
    if (1<<(int(log2(n-1)+1))==n){n++;}
    l2 = log2(n-1)+1;
    int powtwo = 1<<(l2);
    switchxto.resize(powtwo-1);
    switchyto.resize(powtwo-1);
    for (int i = 1; i<=powtwo-1; i++){
        switchxto[i-1]=-2*i;
        switchyto[i-1]=-2*i-1;
    }
    a.resize(powtwo,-1);
    a[powtwo-1]=0;
    for (int i = 0; i<powtwo/2; i++){
        switchxto[powtwo/2+i-1]=a[getcomp(2*i)];
        switchyto[powtwo/2+i-1]=a[getcomp(2*i+1)];
    }
    /*for (int i : switchxto){
        cout<<i<<' ';
    }cout<<'\n';
    for (int i : switchyto){
        cout<<i<<' ';
    }cout<<'\n';
    for (int i : a){
        cout<<i<<' ';
    }cout<<'\n';*/
    exitto.resize(m+1,-1);
    answer(exitto,switchxto,switchyto);
}
#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...