제출 #95744

#제출 시각아이디문제언어결과실행 시간메모리
95744dantoh000Mechanical Doll (IOI18_doll)C++14
6 / 100
143 ms11924 KiB
#include <bits/stdc++.h> using namespace std; #include "doll.h" void create_circuit(int M, std::vector<int> A) { int N = A.size(); A.push_back(0); std::vector<int> C(M + 1); vector<int> nexts[M+1]; for (int i = 0; i < N; i++){ nexts[A[i]].push_back(A[i+1]); } int S = 0; for (int i = 1; i <= M; i++){ if (nexts[i].size() == 1) continue; if (nexts[i].size() == 2) S++; //else S += 3; } C[0] = A[0]; std::vector<int> X(S), Y(S); int curswitch = -1; for (int i = 1; i <= M; ++i) { //printf("%d goes to: ",i); //for (auto x : nexts[i]) printf("%d ",x); //printf("\n"); if (nexts[i].size() == 1){ C[i] = nexts[i][0]; } else if (nexts[i].size() == 2){ C[i] = curswitch; int id = -1*(curswitch--) - 1; X[id] = nexts[i][0]; Y[id] = nexts[i][1]; } } //for (auto x : C) printf("%d ",x); printf("\n"); //for (auto x : X) printf("%d ",x); printf("\n"); //for (auto x : Y) printf("%d ",x); printf("\n"); 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...