이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#include "doll.h"
vector<int> s, x(1<<18), y(1<<18), a;
int cnt, v, b, ind, rt;
int next() {
int j = 0;
for(int k = 0; k < b; k++)
if(v & (1<<k)) j |= 1<<(b-k-1);
s[j+=ind] = -rt-1, ++v;
return j;
}
int dfs(int l, int r, int u) {
if(r - l > 2) {
int m = (l + r) / 2;
x[u] = -1-dfs(l, m, cnt++);
y[u] = -1-dfs(m, r, cnt++);
} else {
x[u] = a[next()];
y[u] = a[next()];
}
return u;
}
void create_circuit(int M, vector<int> A) {
int N = A.size();
s.resize(M+1), a = A;
for(b = 0; b < 20; b++){
if(N & (1<<b)){
s[rt] = -cnt++-1;
rt = cnt-1, v = 0;
dfs(0, 1<<b, rt);
rt = a[(ind+=1<<b)-1];
}
}
s[rt] = 0;
x.resize(cnt);
y.resize(cnt);
answer(s, 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... |