Submission #1245686

#TimeUsernameProblemLanguageResultExecution timeMemory
1245686GabrielMechanical Doll (IOI18_doll)C++17
47 / 100
41 ms11024 KiB
#include "doll.h" #include "bits/stdc++.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]; if(a.size() == 1){ for(int i = 1; i < m + 1; i++) c[i] = 0; answer(c, vector<int>(0, 0), vector<int>(0, 0)); return; } a.erase(a.begin()); vector<int> Posiciones = {0, 1}; for(int i = 1; i < m + 1; i++) c[i] = -1; int Necesitamos = 1, A_adir = 2, Capas = 1; while(Posiciones.size() < n){ vector<int> Nuevo; for(int i = 0; i < Posiciones.size(); i++){ Nuevo.push_back(Posiciones[i]); Nuevo.push_back(Posiciones[i] + Posiciones.size()); } Posiciones = Nuevo; Necesitamos += A_adir; A_adir *= 2; Capas++; } vector<int> x(Necesitamos), y(Necesitamos); for(int i = 0; i < Necesitamos - A_adir / 2; i++){ x[i] = (i + 1) * -2; y[i] = (i + 1) * -2 - 1; } int Estamos_aqu_ = 0; n--; for(int i = Necesitamos - A_adir / 2; i < Necesitamos; i++){ if(Posiciones[Estamos_aqu_] < n) x[i] = a[Posiciones[Estamos_aqu_]]; else x[i] = -1; Estamos_aqu_++; if(Posiciones[Estamos_aqu_] < n) y[i] = a[Posiciones[Estamos_aqu_]]; else y[i] = -1; Estamos_aqu_++; } y.back() = 0; 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...