제출 #298020

#제출 시각아이디문제언어결과실행 시간메모리
298020miss_robot자동 인형 (IOI18_doll)C++14
100 / 100
246 ms13340 KiB
#include <bits/stdc++.h> #include "doll.h" #pragma GCC optimize("O0") using namespace std; int n, m, c = -2; vector<int> X, Y, mode; void b(int u, int l, int &j){ if(l){ Y[-u-1] = c; b(c--, l-1, j); if(j){ X[-u-1] = c; b(c--, l-1, j); } else X[-u-1] = -1; } else{ Y[-u-1] = m+1, j--; if(j) X[-u-1] = m+1, j--; else X[-u-1] = -1; } } void asg(int u, int t){ if(mode[-u-1]){ mode[-u-1] = 0; if(Y[-u-1] == m+1) Y[-u-1] = t; else asg(Y[-u-1], t); } else{ mode[-u-1] = 1; if(X[-u-1] == m+1) X[-u-1] = t; else asg(X[-u-1], t); } } void create_circuit(int M, vector<int> A){ A.push_back(0); n = A.size(), m = M; vector<int> C(m+1); X.resize(2*n), Y.resize(2*n), mode.resize(2*n); C[0] = -1; for(int i = 1; i <= m; i++) C[i] = -1; int l = ceil(log2(n)), t = n; b(-1, l-1, t); for(int i = 0; i < n; i++) asg(-1, A[i]); X.resize(-c-1), Y.resize(-c-1); 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...