Submission #774280

#TimeUsernameProblemLanguageResultExecution timeMemory
774280pashkaMechanical Doll (IOI18_doll)C++17
37 / 100
73 ms9892 KiB
#include "doll.h" using namespace std; int reverse(int x, int k) { int y = 0; for (int i = 0;i < k; i++) { y = (y * 2) + (x % 2); x /= 2; } return y; } void create_circuit(int M, std::vector<int> A) { int n = A.size(); int k = 0; while ((1 << (k + 1)) < n + 1) { k++; } vector<int> x((1 << (k + 1)) - 1), y((1 << (k + 1)) - 1); for (int i = 0; i < (1 << k) - 1; i++) { x[i] = -((2 * i + 1) + 1); y[i] = -((2 * i + 2) + 1); } for (int i = 0; i < (1 << k); i++) { int t = reverse(2 * i, k + 1); if (t < n) { t = A[t]; } else { t = -1; } x[(1 << k) - 1 + i] = t; t = reverse(2 * i + 1, k + 1); if (t < n) { t = A[t]; } else if (i == (1 << k) - 1) { t = 0; } else { t = -1; } y[(1 << k) - 1 + i] = t; } vector<int> c(M + 1, -1); // for (int i = 0; i < x.size(); i++) { // cout << x[i] << " " << y[i] << "\n"; // } 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...