Submission #498284

#TimeUsernameProblemLanguageResultExecution timeMemory
498284dxz05Mechanical Doll (IOI18_doll)C++14
16 / 100
86 ms12552 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; void create_circuit(int M, vector<int> A) { A.push_back(0); int N = A.size(); vector<int> C(M + 1, 0); vector<int> X, Y; vector<int> pos[M + 1]; for (int i = 0; i < N; i++){ pos[A[i]].push_back(i); } int S = 0; C[0] = A[0]; for (int id = 0; id <= M; id++){ if (pos[id].empty()) continue; if (pos[id].size() == 1){ int i = pos[id][0]; C[A[i]] = A[(i + 1) % N]; continue; } if (pos[id].size() == 2){ int i = pos[id][0], j = pos[id][1]; S++; X.push_back(0); Y.push_back(0); C[A[i]] = -S; X[S - 1] = A[(i + 1) % N]; Y[S - 1] = A[(j + 1) % N]; continue; } if (pos[id].size() == 3){ int i = pos[id][0], j = pos[id][1], k = pos[id][2]; S += 3; X.push_back(0); X.push_back(0); X.push_back(0); Y.push_back(0); Y.push_back(0); Y.push_back(0); C[A[i]] = -(S - 2); X[S - 3] = -(S - 1); Y[S - 3] = -S; X[S - 2] = -(S - 2); Y[S - 2] = A[(j + 1) % N]; X[S - 1] = A[(i + 1) % N]; Y[S - 1] = A[(k + 1) % N]; continue; } if (pos[id].size() == 4){ int i = pos[id][0], j = pos[id][1], k = pos[id][2], l = pos[id][3]; S += 3; X.push_back(0); X.push_back(0); X.push_back(0); Y.push_back(0); Y.push_back(0); Y.push_back(0); C[A[i]] = -(S - 2); X[S - 3] = -(S - 1); Y[S - 3] = -S; X[S - 2] = A[(i + 1) % N]; Y[S - 2] = A[(k + 1) % N]; X[S - 1] = A[(j + 1) % N]; Y[S - 1] = A[(l + 1) % N]; continue; } } 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...