이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;
#define MAX 3000000
vector<vector<int>> ve;
vector<int> x, y, de;
int nxt = 0, n;
int create(){
nxt++;
x.push_back(0), y.push_back(0);
return nxt;
}
void mktr(int no, int ri, int md, int d){
if (d == md - 1){
x[no - 1] = -ri;
y[no - 1] = -ri;
return;
}
x[no - 1] = -create();
mktr(-x[no - 1], ri, md, d + 1);
y[no - 1] = -create();
mktr(-y[no - 1], ri, md, d + 1);
}
void connect(int no, int in, int md, int d, int wh){
int val = (1<<d) & in;
if (d == md - 1){
if (val == 0){
x[no - 1] = wh;
}
else{
y[no - 1] = wh;
}
}
else{
if (val == 0){
connect(-x[no - 1], in, md, d + 1, wh);
}
else{
connect(-y[no - 1], in, md, d + 1, wh);
}
}
}
void create_circuit(int M, vector<int> A){
n = A.size();
vector<int> tr(M + 1, 0);
ve.assign(M + 1, vector<int>()), de.assign(M + 1, 0);
for (int i = 0; i < n - 1; i++){
ve[A[i]].push_back(A[i + 1]);
}
tr[0] = A[0];
for (int i = 1; i <= M; i++){
int d = ceil(log2(ve[i].size() + 2));
de[i] = d;
tr[i] = -create();
mktr(-tr[i], -tr[i], d, 0);
for (int j = 0; j < ve[i].size(); j++){
connect(-tr[i], j, d, 0, ve[i][j]);
}
}
connect(-tr[A[n - 1]], ve[A[n - 1]].size(), de[A[n - 1]], 0, tr[1]);
for (int i = 1; i < M; i++){
connect(-tr[i], (1<<de[i]) - 1, de[i], 0, tr[i + 1]);
}
connect(-tr[M], (1<<de[M]) - 1, de[M], 0, 0);
answer(tr, x, y);
}
컴파일 시 표준 에러 (stderr) 메시지
doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:56:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
56 | for (int j = 0; j < ve[i].size(); j++){
| ~~^~~~~~~~~~~~~~
# | 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... |