Submission #1237233

#TimeUsernameProblemLanguageResultExecution timeMemory
1237233TimoshMechanical Doll (IOI18_doll)C++20
15 / 100
56 ms12200 KiB
#include "bits/stdc++.h" #include "doll.h" using namespace std; void create_circuit(int M, vector<int> A) { int N = A.size(); vector<int> C(M + 1); C[0] = A[0]; vector<int> X, Y; vector<vector<int>> g(M + 1); for (int i = 0; i < N - 1; i++) g[A[i]].push_back(A[i + 1]); g[A.back()].push_back(0); for (int i = 1; i <= M; i++) { int sz = g[i].size(); if (sz == 0) continue; if (sz == 1) { C[i] = g[i][0]; continue; } int x = 0; while ((1ll << x) < sz) x++; int ind = X.size() + 1; ind *= -1; reverse(g[i].begin(), g[i].end()); while (sz < (1ll << x)) sz++, g[i].push_back(ind); reverse(g[i].begin(), g[i].end()); C[i] = ind; for (int i = 0; i < (1ll << x) / 2 - 1; i++) { X.push_back(ind - (2 * i + 1)); Y.push_back(ind - (2 * i + 2)); } int j = 0; while (j < sz) { X.push_back(g[i][j++]); Y.push_back(g[i][j++]); } } 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...