# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
775324 | I_Love_EliskaM_ | Mechanical Doll (IOI18_doll) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
void create_circuit(int m, vector<int>a) {
vector<int> c(m+1,-1); c[0]=a[0];
int n=a.size();
int sz=1; while (sz<n) sz<<=1;
vector<int> x(2*sz-1,-1), y(2*sz-1,-1);
forn(i,sz-1) x[i]=2*i+1, y[i]=2*i+2;
forn(i,sz-1) x[i]=-1-x[i], y[i]=-1-y[i];
vector<int> s(2*sz-1,1);
vector<pi> z;
forn(it,2*sz) {
int p=0;
while (p<sz-1) {
s[p]^=1;
p=2*p+1+s[p];
}
z.pb({p,s[p]});
s[p]^=1;
}
forn(i,n-1) {
if (z[i].s) y[z[i].f]=a[i+1];
else x[z[i].f]=a[i+1];
}
y[z.back().f]=0;
answer(c,x,y);
}