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 "doll.h"
#include <iostream>
using namespace std;
int n, idx, b[500010], cnt, cnnt;
vector<int> a, edge[2];
void run(int id, int x, int y) {
int mid = (x+y)/2;
if (b[id] == 0) {
b[id] = 1;
if (n < mid+1) {
edge[0][id-1] = -1;
return;
}
if (mid+1 == y) {
edge[0][id-1] = a[cnnt++];
return;
}
if (edge[0][id-1] == 1e9) {
edge[0].push_back(1e9);
edge[1].push_back(1e9);
edge[0][id-1] = --cnt;
}
run(-edge[0][id-1],mid+1,y);
} else {
b[id] = 0;
if (mid+1 == y) {
edge[1][id-1] = a[cnnt++];
return;
}
if (edge[1][id-1] == 1e9) {
edge[0].push_back(1e9);
edge[1].push_back(1e9);
edge[1][id-1] = --cnt;
}
run(-edge[1][id-1],x,mid);
}
}
void create_circuit(int m, std::vector<int> A) {
a = A;
a.push_back(0);
n = a.size();
vector<int> C(m+1,-1);
while ((1<<(idx+1)) < n) idx++;
edge[0].push_back(1e9);
edge[1].push_back(1e9);
cnt = -1;
for (int i = 1; i <= (1<<(idx+1)); i++) run(1,1,(1<<(idx+1)));
answer(C,edge[0],edge[1]);
}
# | 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... |