제출 #1322274

#제출 시각아이디문제언어결과실행 시간메모리
1322274kasamchiMechanical Doll (IOI18_doll)C++20
16 / 100
46 ms11660 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; #define INF 1000000000 void create_circuit(int M, vector<int> A) { int N = A.size(); A.push_back(0); vector<vector<int>> edge(M + 1); for (int k = 0; k < N; k++) { edge[A[k]].push_back(A[k + 1]); } vector<int> C(M + 1), swt(M + 1, -1); vector<int> X, Y; C[0] = A[0]; for (int i = 1; i <= M; i++) { if (edge[i].empty()) {} else if (edge[i].size() == 1) { C[i] = edge[i][0]; } else if (edge[i].size() == 2) { C[i] = -X.size() - 1; X.push_back(edge[i][0]), Y.push_back(edge[i][1]); } else { int a = -X.size() - 1, b = -X.size() - 2, c = -X.size() - 3; if (edge[i].size() == 3) { C[i] = a; X.push_back(b), Y.push_back(c); X.push_back(edge[i][0]), Y.push_back(a); X.push_back(edge[i][1]), Y.push_back(edge[i][2]); } else { C[i] = a; X.push_back(b), Y.push_back(c); X.push_back(edge[i][0]), Y.push_back(edge[i][2]); X.push_back(edge[i][1]), Y.push_back(edge[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...