Submission #756343

#TimeUsernameProblemLanguageResultExecution timeMemory
756343drdilyorMechanical Doll (IOI18_doll)C++17
6 / 100
81 ms12720 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(); }; int n = arr.size(); vector<vector<int>> nxt(m+1); arr.push_back(0); for (int i = 0; i < n; i++) { nxt[arr[i]].push_back(arr[i+1]); } for (int i = 1; i <= m; i++) { if (nxt[i].empty()) { c[i] = 0; } else if (nxt[i].size() == 1) { c[i] = nxt[i][0]; } else if (nxt[i].size() == 2) { c[i] = add(nxt[i][0], nxt[i][1]); } else if (nxt[i].size() == 4) { c[i] = add( add(nxt[i][0], nxt[i][1]), add(nxt[i][2], nxt[i][3])); } else if (nxt[i].size() == 3) { int t1 = add(0, nxt[i][1]); int t2 = add(nxt[i][0], nxt[i][2]); int t3 = c[i] = add(t1, t2); end(x)[-3] = t3; } } c[0] = arr[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...