Submission #1021123

#TimeUsernameProblemLanguageResultExecution timeMemory
1021123fv3자동 인형 (IOI18_doll)C++14
18 / 100
35 ms9168 KiB
#include <bits/stdc++.h> #include "doll.h" using namespace std; vector<int> C; vector<int> X, Y; int lastSwitch = 0; void make_connections(int cnt, int dest) { int origo = -X.size() - 1; int nt = 1; while (nt < cnt) nt *= 2; vector<int> st(2 * nt), label(2 * nt); for (int i = 2 * nt - cnt; i < 2 * nt; i++) st[i] = 1; for (int i = nt - 1; i >= 1; i--) st[i] = max(st[i*2], st[i*2|1]); label[1] = --lastSwitch; for (int i = 1; i < nt; i++) { if (!st[i]) continue; if (st[i * 2]) { if (i * 2 >= nt) { X.push_back(dest); } else { X.push_back(--lastSwitch); label[i*2] = lastSwitch; } } else { X.push_back(origo); } if ((2 * i | 1) >= nt) { if ((2 * i | 1) == 2 * nt - 1) { Y.push_back(0); } else { Y.push_back(dest); } } else { label[(2*i|1)] = --lastSwitch; Y.push_back(lastSwitch); } } Y.back() = 0; } void create_circuit(int M, vector<int> A) { if (M > 1) return; C = vector<int>(M + 1); C[0] = A[0]; C[1] = -1; make_connections(A.size(), A[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...