# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1026937 | 2024-07-18T14:20:39 Z | nisanduu | 자동 인형 (IOI18_doll) | C++14 | 0 ms | 0 KB |
#include "doll.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; void create_circuit(int M, std::vector<int> A) { int N = A.size(); ll inf = 1e9; std::vector<int> C(M + 1,inf); vector<int> X,Y; map<int,int> mp; vector<int> unused; int sz = A.size(); int crMinus = -1; C[0] = crMinus; Y.push_back(A[0]); X.push_back(crMinus); crMinus--; //A.push_back(0); for(int i=0;i<(A.size()-1);i++){ //C[A[i]] = A[i+1]; C[A[i]] = crMinus; Y.push_back(A[i+1]); X.push_back(crMinus); mp[A[i]] = ind; ind++; crMinus--; } C[A[sz-1]]=0; for(int i=0;i<(M+1);i++){ if(C[i]==inf){ unused.push_back(i); } } sz = unused.size(); for(int i=0;i<(sz-1);i++){ C[unused[i]] = unused[i+1]; } if(sz>0){ C[unused[sz-1]] = 0; } //std::vector<int> X(N), Y(N); answer(C, X, Y); }