Submission #612071

#TimeUsernameProblemLanguageResultExecution timeMemory
612071JomnoiMechanical Doll (IOI18_doll)C++17
6 / 100
282 ms40812 KiB
#include <bits/stdc++.h> #include "doll.h" using namespace std; const int MAX_M = 1e5 + 5; int N, M, S; set <int> keepnxt[MAX_M]; vector <int> nxt[MAX_M]; vector<int> C, X, Y; void create_circuit(int m, vector <int> A) { N = A.size(), M = m; C.resize(M + 1); A.push_back(0); for(int i = 0; i < N; i++) { if(keepnxt[A[i]].count(A[i + 1])) { continue; } keepnxt[A[i]].insert(A[i + 1]); nxt[A[i]].push_back(A[i + 1]); } C[0] = A[0]; for(int i = 0; i < N; i++) { if(nxt[A[i]].empty()) { continue; } else if(nxt[A[i]].size() == 1) { C[A[i]] = A[i + 1]; } else { S++; C[A[i]] = -S; if(nxt[A[i]].size() == 2) { X.push_back(nxt[A[i]][0]); Y.push_back(nxt[A[i]][1]); } else if(nxt[A[i]].size() == 3) { int now = S; S += 2; X.push_back(-now - 1); Y.push_back(-now - 2); X.push_back(nxt[A[i]][0]); Y.push_back(-now); X.push_back(nxt[A[i]][1]); Y.push_back(nxt[A[i]][2]); } else if(nxt[A[i]].size() == 4) { int now = S; S += 2; X.push_back(-now - 1); Y.push_back(-now - 2); X.push_back(nxt[A[i]][0]); X.push_back(nxt[A[i]][1]); Y.push_back(nxt[A[i]][2]); Y.push_back(nxt[A[i]][3]); } } } 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...