Submission #1240673

#TimeUsernameProblemLanguageResultExecution timeMemory
1240673nikdMechanical Doll (IOI18_doll)C++20
6 / 100
44 ms11192 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...