제출 #940726

#제출 시각아이디문제언어결과실행 시간메모리
940726snpmrnhlol자동 인형 (IOI18_doll)C++17
37 / 100
71 ms10048 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; void create_circuit(int m, vector<int> a) { int n = a.size(); int len = 0; while((1<<len) < n + 1)len++; vector <int> c(m + 1); vector <int> x((1<<len) - 1); vector <int> y((1<<len) - 1); for(int i = 0;i < m + 1;i++){ c[i] = -1; } for(int i = 1;i < (1<<(len - 1));i++){ x[i - 1] = -(i*2); y[i - 1] = -(i*2 + 1); } for(int i = (1<<(len - 1));i < (1<<len);i++){ int ord1 = 0,ord2 = 0; int nr = i - (1<<(len - 1)); for(int j = 0;j < len - 1;j++){ if(nr>>j&1){ ord1|=(1<<(len - j - 2)); } } ord2 = ord1 + (1<<(len - 1)); if(ord1 < n){ x[i - 1] = a[ord1]; }else{ if(ord1 == (1<<len) - 1){ x[i - 1] = 0; }else{ x[i - 1] = -1; } } if(ord2 < n){ y[i - 1] = a[ord2]; }else{ if(ord2 == (1<<len) - 1){ y[i - 1] = 0; }else{ y[i - 1] = -1; } } //cout<<i<<' '<<ord1<<' '<<ord2<<'\n'; } return answer(c,x,y); } /** 3 4 1 1 2 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...