이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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... |