Submission #295056

#TimeUsernameProblemLanguageResultExecution timeMemory
295056SaboonMechanical Doll (IOI18_doll)C++17
37 / 100
196 ms9900 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; vector<int> X,Y; vector<int> mark; int build(int id, int L, int R, int x){ if (L+1 == R) return -x; int mid = (L + R) >> 1; if (mark[id] == 0) X[id-1] = build(2*id+0, L, mid, x); else Y[id-1] = build(2*id+1, mid, R, x); mark[id] ^= 1; return id; } void create_circuit(int m, vector<int> A){ int n = A.size(); int Sz = n+1; while (__builtin_popcount(Sz) != 1) Sz ++; cerr << Sz << endl; X.resize(Sz-1), Y.resize(Sz-1), mark.resize(Sz-1); vector<int> C(m+1); for (int i = 0; i <= m; i++) C[i] = -1; for (int i = 0; i < n; i++) build(1, 0, Sz, A[i]); for (int i = n; i < Sz-1; i++) build(1, 0, Sz, -1); build(1, 0, Sz, 0); for (int i = 0; i < Sz-1; i++) X[i] *= -1, Y[i] *= -1; 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...