Submission #836151

#TimeUsernameProblemLanguageResultExecution timeMemory
836151mousebeaverMechanical Doll (IOI18_doll)C++14
53 / 100
119 ms13392 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; void dfs(vector<int> adjlist, vector<int>& x, vector<int>& y) { //adjlist.size() > 1, insert new switch if(adjlist.size()%2 == 1) { adjlist.insert(adjlist.begin(), -(x.size()+1)); } if(adjlist.size()%2 == 0) { x.push_back(0); y.push_back(0); int index = x.size()-1; if(adjlist.size() == 2) { x.back() = adjlist[0]; y.back() = adjlist[1]; return; } vector<int> even(0); vector<int> odd(0); for(int i = 0; i < (int) adjlist.size(); i++) { if(i%2 == 0) { even.push_back(adjlist[i]); } else { odd.push_back(adjlist[i]); } } x[index] = -(x.size()+1); dfs(even, x, y); y[index] = -(x.size()+1); dfs(odd, x, y); return; } /*//Uneven size of adjlist? int index = x.size(); x.push_back(0); y.push_back(0); x.back() = -(x.size()+1); y.back() = -(x.size()+2); x.push_back(adjlist[0]); y.push_back(adjlist[1]); x.push_back(-(index+1)); y.push_back(adjlist[2]);*/ } void create_circuit(int m, std::vector<int> a) { int n = a.size(); vector<vector<int>> adjlist(m+1, vector<int> (0)); adjlist[0] = {a[0]}; for(int i = 0; i < n-1; i++) { adjlist[a[i]].push_back(a[i+1]); } adjlist[a[n-1]].push_back(0); vector<int> c(m+1, 0); vector<int> x(0); vector<int> y(0); for(int i = 0; i <= m; i++) { if(adjlist[i].empty()) { continue; } if(adjlist[i].size() == 1) { c[i] = adjlist[i][0]; continue; } c[i] = -(x.size()+1); dfs(adjlist[i], x, y); } 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...