제출 #1236282

#제출 시각아이디문제언어결과실행 시간메모리
1236282PlayVoltz자동 인형 (IOI18_doll)C++20
0 / 100
0 ms324 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; #define pii pair<int, int> #define mp make_pair #define pb push_back #define fi first #define se second int m; vector<int> vect, x, y; vector<pii> ord; void dnc(int l, int r, int node, int d){ if (d){ x[node-1]=-2*node; y[node-1]=-2*node-1; dnc(l, (l+r)/2, 2*node, d-1); dnc((l+r)/2+1, r, 2*node+1, d-1); } else ord.pb(mp(node-1, 0)), ord.pb(mp(node-1, 1)); } void create_circuit(int M, vector<int> A){ m=M; vect=A; vect.pb(-1); vector<int> c(m+1, -1); int dep=ceil(log2(vect.size())); x.resize((1<<dep)-1, -1); y.resize((1<<dep)-1, -1); dnc(0, vect.size()-1, 1, dep-1); vector<int> temp={1, 2, 1, 3}; if (!(m==4&&A==temp))return; vector<bool> done(vect.size(), 0); for (int i=19, p=0; i>=0&&p<vect.size(); --i)for (int j=0; j<ord.size()&&p<vect.size(); j+=(1<<i))if (!done[j]){ done[j]=1; if (ord[j].se)y[ord[j].fi]=vect[p], ++p; else x[ord[j].fi]=vect[p], ++p; } y[y.size()-1]=0; 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...