Submission #541137

#TimeUsernameProblemLanguageResultExecution timeMemory
541137MilosMilutinovicMechanical Doll (IOI18_doll)C++14
6 / 100
79 ms12472 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; void create_circuit(int m, vector<int> a) { int n = a.size(); vector<vector<int>> nxt(m + 1); for (int i = 0; i + 1 < n; i++) { nxt[a[i]].push_back(a[i + 1]); } nxt[0].push_back(a[0]); nxt[a.back()].push_back(0); vector<int> ans(m + 1); vector<int> x; vector<int> y; int idx = 0; for (int i = 0; i <= m; i++) { if (nxt[i].empty()) { ans[i] = 0; continue; } if (nxt[i].size() == 1) { ans[i] = nxt[i][0]; continue; } function<void(int, int, int)> Rec = [&](int node, int l, int r) { if (l + 1 == r) { x.push_back(nxt[i][l]); y.push_back(nxt[i][r]); return; } if (l + 2 == r) { --idx; x.push_back(idx); --idx; y.push_back(idx); x.push_back(node); y.push_back(nxt[i][l + 1]); x.push_back(nxt[i][l]); y.push_back(nxt[i][r]); return; } int mid = l + r >> 1; --idx; x.push_back(idx); --idx; y.push_back(idx); Rec(idx + 1, l, mid); Rec(idx, mid + 1, r); }; --idx; ans[i] = idx; Rec(idx, 0, nxt[i].size() - 1); } answer(ans, x, y); }

Compilation message (stderr)

doll.cpp: In lambda function:
doll.cpp:44:19: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   44 |       int mid = l + r >> 1;
      |                 ~~^~~
#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...