Submission #312685

#TimeUsernameProblemLanguageResultExecution timeMemory
312685tengiz05자동 인형 (IOI18_doll)C++17
100 / 100
89 ms10404 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; const int inf = 2e9; int sz=1, n, cnt=0; void create_circuit(int m, vector<int> a) { a.push_back(0); n = a.size(); while(sz < n)sz<<=1, cnt++; vector<int> t(sz*2); for(int i=0;i<sz;i++)t[i+sz] = inf; int tt = 0; vector<int> rev(sz); for(int i=0;i<sz;i++)rev[i] = rev[i/2]/2|((i&1)<<(cnt-1)); int j=0; for(int i=0;i<sz;i++){ if(rev[i] >= sz-n)t[rev[i]+sz] = a[j], j++; else t[rev[i]+sz] = inf; } vector<int> X, Y; for(int i=sz-1; i>0; i--){ if(t[i*2] == inf && t[i*2+1] == inf)t[i] = inf; else { t[i] = --tt; X.push_back(t[i*2]); Y.push_back(t[i*2+1]); } }for(int i=0;i<(int)X.size();i++){ if(X[i] == inf)X[i] = tt; if(Y[i] == inf)Y[i] = tt; } answer(vector<int>(m+1, tt), 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...