This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |