Submission #1216563

#TimeUsernameProblemLanguageResultExecution timeMemory
1216563the_coding_poohMechanical Doll (IOI18_doll)C++20
37 / 100
72 ms13236 KiB
#include "doll.h"
#include <bits/stdc++.h>
#define uwu return

using namespace std;

vector <int> X, Y;

int build_cbt(vector <int> A){
    vector <int> split_A, split_B;
    int N = (int)A.size();
    if(N == 1){
        uwu A[0];
    }
    for (int i = 0; i < N; i++){
        if(!(i & 1))
            split_A.push_back(A[i]);
        else
            split_B.push_back(A[i]);
    }
    int l = build_cbt(split_A), r = build_cbt(split_B);
    X.push_back(l);
    Y.push_back(r);
    uwu -((int)X.size());
}

int build(vector <int> A){
    int N = (int) A.size();
    int lg = __lg(N + 1);
    if(N + 1 == (1 << lg)){
        A.push_back(0);
        return build_cbt(A);
    }
    else{
        while(N + 1 != (1 << __lg(N + 1))){
            A.push_back(71227122);
            N++;
        }
        A.push_back(0);
        int id = build_cbt(A);
        for(auto &i:X){
            if(i == 71227122)
                i = id;
        }
        for(auto &i:Y){
            if(i == 71227122)
                i = id;
        }
        uwu id;
    }
}

void create_circuit(int M, std::vector<int> A) {
    vector<int> C(M + 1);
    X.clear(), Y.clear();
    int id = build(A);
    C[0] = id;
    for (int i = 1; i <= M; ++i) {
        C[i] = id;
    }
    answer(C, X, Y);
    uwu;
}
#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...