Submission #426460

#TimeUsernameProblemLanguageResultExecution timeMemory
426460KoD자동 인형 (IOI18_doll)C++17
37 / 100
174 ms24100 KiB
#include <bits/stdc++.h>
#include "doll.h"

template <class T> using Vec = std::vector<T>;

void create_circuit(int M, Vec<int> A) {
    const int N = (int) A.size();
    int H = 0;
    while ((1 << H) <= N) {
        H += 1;
    }
    const int S = 1 << H;
    Vec<Vec<int>> graph(S);
    for (int i = S / 2 - 1; i > 0; --i) {
        graph[i].push_back(-(2 * i));
        graph[i].push_back(-(2 * i + 1));
    }
    for (int i = 0; i < S; ++i) {
        int k = 1;
        for (int x = i, y = 0; y < H - 1; x /= 2, y += 1) {
            k = 2 * k + (x & 1);
        }
        const int dst = (i < N ? A[i] : (i + 1 == S ? 0 : -1));
        graph[k].push_back(dst);
    }
    Vec<int> X(S - 1), Y(S - 1);
    for (int i = 0; i < S - 1; ++i) {
        X[i] = graph[i + 1][0];
        Y[i] = graph[i + 1][1];
    }
    answer(Vec<int>(M + 1, -1), 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...