제출 #756353

#제출 시각아이디문제언어결과실행 시간메모리
756353drdilyor자동 인형 (IOI18_doll)C++17
37 / 100
137 ms11228 KiB
#include<bits/stdc++.h> #include "doll.h" using namespace std; using ll = long long; void create_circuit(int m, std::vector<int> arr) { vector<int> c(m+1); vector<int> x, y; auto add = [&](int a, int b){ x.push_back(a), y.push_back(b); return -(int)x.size(); }; auto tree = [&](auto& tree, vector<int> nxt) { if (nxt.size() == 1) { return nxt[0]; } vector<int> odd, even; for (int i = 0; i < (int)nxt.size(); i += 2) { odd.push_back(nxt[i]); even.push_back(nxt[i+1]); } int t1 = tree(tree, odd); int t2 = tree(tree, even); return add(t1, t2); }; arr.push_back(0); reverse(arr.begin(), arr.end()); while (__builtin_popcount(arr.size()) > 1) arr.push_back(INT_MAX); reverse(arr.begin(), arr.end()); c[0] = tree(tree, arr); for (int i = 0; i < (int)x.size(); i++) { if (x[i] == INT_MAX) x[i] = c[0]; if (y[i] == INT_MAX) y[i] = c[0]; } for (int i = 1; i <= m; i++) c[i] = c[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...