제출 #1286180

#제출 시각아이디문제언어결과실행 시간메모리
1286180muhammad-ahmad자동 인형 (IOI18_doll)C++20
0 / 100
1 ms340 KiB
#include <bits/stdc++.h> #include "doll.h" using namespace std; vector<int> ord(int n){ if (n == 1) return {1}; vector<int> a = ord(n / 2), ans; for (auto i : a){ ans.push_back(i); ans.push_back(i + n / 2); } return ans; } void create_circuit(int M, vector<int> A) { // A.push_back(0); int N = A.size()+1; int p = 1; while (p < N) p *= 2; vector<int> O = ord(p); vector<int> C(M + 1, -1), X(2 * p - 1), Y(2 * p - 1); deque<int> leaves = {-1}; while (leaves.size() && -2 * leaves.front() <= 2 * p - 1){ int x = -leaves.front(); leaves.pop_front(); X[x - 1] = -(2 * x); Y[x - 1] = -(2 * x + 1); leaves.push_back(-(2 * x)); leaves.push_back(-(2 * x + 1)); } for(auto &i:O){ i += p-1; // cout<<i<<' '; } for (int i = 0; i < p; i++){ X[O[i]-1]=-O[i]; if(i<N-1) Y[O[i]-1]=A[i]; else Y[O[i]-1]=-1; } X[2*p-2]=-(2*p-1); Y[2*p-2]=0; // for(int i=0;i<2*p-1;i++){ // cout<<-i-1<<' '<<X[i]<<' '<<Y[i]<<endl; // } answer(C,X,Y); } // int main(){ // create_circuit(4, {1, 2, 1, 3}); // }
#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...