#include "doll.h"
#include <bits/stdc++.h>
using namespace std;
void create_circuit(int M, std::vector<int> A) {
vector<vector<int>> next(M+1);
next[0].push_back(A[0]);
int n = A.size();
for(int i = 0; i<n-1; i++){
next[A[i]].push_back(A[i+1]);
}
next[A[n-1]].push_back(0);
int s = 0;
vector<int> c(M+1);
vector<int> x, y;
for(int i = 0; i<=M; i++){
if(next[i].empty()) c[i] = 0;
else if(next[i].size() == 1) c[i] = next[i][0];
else{
c[i] = -(++s);
int idx = 0;
auto build = [&](auto&& build, int pow2, int md)->void{
int md1 = md;
int md2 = md+pow2;
pow2 <<= 1;
if(next[i].size()-md1 <= pow2){
x.push_back(next[i][md1]);
y.push_back(next[i][md2]);
}
else{
if(next[i].size()-md2 <= pow2){
x.push_back(-(++s));
y.push_back(next[i][md2]);
build(build, pow2, md1);
}
else{
x.push_back(-(++s));
y.push_back(-(++s));
build(build, pow2, md1);
build(build, pow2, md2);
}
}
};
build(build, 1, 0);
}
}
answer(c, x, y);
//answer(C, 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... |