제출 #330451

#제출 시각아이디문제언어결과실행 시간메모리
330451mickytanawin자동 인형 (IOI18_doll)C++14
0 / 100
2 ms332 KiB
#include <bits/stdc++.h> #include "doll.h" using namespace std; const int N = 2e5; const int LOGN = 17; vector<int> C(0), X(0), Y(0); void create(vector<int> &A,int u,int si){ if(si == 2){ X[u - 1] = A[0]; Y[u - 1] = A[1]; return; } vector<int> left(0); vector<int> right(0); int i = 1; for(auto x : A){ if(i % 2 == 0){ right.push_back(x); } else { left.push_back(x); } ++i; } X[u - 1] = -(2 * u); Y[u - 1] = -(2 * u + 1); create(left, 2 * u, si / 2); create(right, 2 * u + 1, si / 2); return; } void create_circuit(int M, std::vector<int> A) { int n = A.size(); int nExp = 0; C.assign(M + 1, 0); for(int e = 0; e <= LOGN + 1; ++e){ if((1 << e) > n){ nExp = e; break; } } X.assign((1 << nExp) - 1, 0); Y.assign((1 << nExp) - 1 ,0); A.resize(1 << nExp); for(int i = n; i < (1 << nExp); ++i){ A[i] = -1; } A[(1 << nExp) - 1] = 0; create(A, 1, (1 << nExp)); for(int i = 0; i <= n; ++i){ C[i] = -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...