제출 #601438

#제출 시각아이디문제언어결과실행 시간메모리
601438skittles1412자동 인형 (IOI18_doll)C++17
53 / 100
145 ms23628 KiB
#include "bits/extc++.h" using namespace std; template <typename T> void dbgh(const T& t) { cerr << t << endl; } template <typename T, typename... U> void dbgh(const T& t, const U&... u) { cerr << t << " | "; dbgh(u...); } #ifdef DEBUG #define dbg(...) \ cerr << "L" << __LINE__ << " [" << #__VA_ARGS__ << "]: "; \ dbgh(__VA_ARGS__); #else #define dbg(...) #define cerr \ if (false) \ cerr #endif #define endl "\n" #define long int64_t #define sz(x) int((x).size()) void answer(vector<int> C, vector<int> X, vector<int> Y); vector<pair<int, int>> ans; int construct(const vector<int>& arr) { if (sz(arr) == 1) { return arr[0]; } int o = sz(ans); ans.emplace_back(0, 0); vector<int> l, r; for (int i = 0; i < sz(arr); i++) { if (i % 2 == 0) { l.push_back(arr[i]); } else { r.push_back(arr[i]); } } if (sz(arr) % 2 == 1) { r.push_back(l.back()); l.back() = -o - 1; } ans[o] = {construct(l), construct(r)}; return -o - 1; } void create_circuit(int m, vector<int> arr) { vector<int> nxt[m + 1]; arr.insert(arr.begin(), 0); arr.push_back(0); for (int i = 0; i < sz(arr) - 1; i++) { nxt[arr[i]].push_back(arr[i + 1]); } vector<int> ans1(m + 1); for (int i = 0; i <= m; i++) { if (sz(nxt[i])) { ans1[i] = construct(nxt[i]); } } vector<int> ans2, ans3; for (auto& [x, y] : ans) { ans2.push_back(x); ans3.push_back(y); } answer(ans1, ans2, ans3); }
#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...