Submission #847193

#TimeUsernameProblemLanguageResultExecution timeMemory
84719312345678Mechanical Doll (IOI18_doll)C++17
18 / 100
57 ms11152 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; const int nx=2e5+1000; int cnt, mx, used, id; vector<int> v, X(nx), Y(nx); void add(int idx, int layer) { used=max(used, idx); if (layer==mx) { if (cnt>=1) Y[idx-1]=v[cnt--], X[idx-1]=v[cnt--]; else if (cnt==0) Y[idx-1]=v[cnt--], X[idx-1]=-1; } else { int sid=id+1; add(++id, layer+1); Y[idx-1]=-sid; sid=id+1; if (cnt>=0) add(++id, layer+1), X[idx-1]=-sid; else X[idx-1]=-1; } //cout<<-idx<<' '<<X[idx-1]<<' '<<Y[idx-1]<<'\n'; } void create_circuit(int M, std::vector<int> A) { vector<int> C(M+1); C[0]=-1; C[1]=-1; v=A; v.push_back(0); int N=v.size(); cnt=N-1; mx=ceil(log2(N)); add(++id, 1); X.resize(used); Y.resize(used); 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...