이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "doll.h"
#include "bits/stdc++.h"
using namespace std;
const int N = 5e6;
vector<int> x(N), y(N);
int idx = 0, n, cc[N];
int NN;
int build(int l, int r) {
if(NN - r >= n) return -1;
if(l == r) return 1;
int mid = l + r >> 1;
int i = idx++;
x[i] = build(l, mid);
y[i] = build(mid + 1, r);
return -i - 1;
}
void create_circuit(int m, vector<int> a) {
a.push_back(0);
n = a.size();
vector<int> c(m + 1, -1);
NN = n; while(__builtin_popcount(NN) != 1) ++NN;
build(0, NN - 1);
x.resize(idx);
y.resize(idx);
for(int i: a) {
int node = 0;
while(true) {
int nxt = (cc[node] ? y[node] : x[node]);
if(nxt == 1) {
if(cc[node] == 1) y[node] = i;
else x[node] = i;
cc[node] ^= 1;
break;
}
cc[node] ^= 1;
node = -nxt - 1;
}
}
answer(c, x, y);
}
컴파일 시 표준 에러 (stderr) 메시지
doll.cpp: In function 'int build(int, int)':
doll.cpp:11:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
11 | int mid = l + r >> 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... |