제출 #1210265

#제출 시각아이디문제언어결과실행 시간메모리
1210265loiiii12358자동 인형 (IOI18_doll)C++20
18 / 100
56 ms9884 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; vector<int> X={0},Y={0}; void solve(int id,int d,vector<int> a){ vector<int> l,r; int cnt=int(a.size())-(1<<d),pt=0; for(int i=0;i<2*(1<<d);i++){ // cout << i << ' ' << l.size() << ' ' << r.size() << endl; if(i%2==0){ if(cnt>0){ l.push_back(a[pt++]); cnt--; } }else if(pt<a.size()){ r.push_back(a[pt++]); } } // cout << id << ' ' << d << endl; // for(int i=0;i<a.size();i++){ // cout << a[i] << " "; // } // cout << endl; // for(int i=0;i<l.size();i++){ // cout << l[i] << " "; // } // cout << endl; // for(int i=0;i<r.size();i++){ // cout << r[i] << " "; // } // cout << endl << endl; if(l.size()==0){ X[id]=-1; }else if(d==0){ X[id]=l[0]; }else{ int tmp=X.size(); X[id]=-tmp-1; X.push_back(0);Y.push_back(0); solve(tmp,d-1,l); } if(d==0){ Y[id]=r[0]; }else{ int tmp=X.size(); Y[id]=-tmp-1; X.push_back(0);Y.push_back(0); solve(tmp,d-1,r); } } void create_circuit(int M, vector<int> A) { A.push_back(0); for(int i=1;i<20;i++){ if((1<<i)>=A.size()){ solve(0,i-1,A); break; } } vector<int> C(M+1,-1); answer(C, X, Y); } //9 -> 16 //
#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...