Submission #471484

#TimeUsernameProblemLanguageResultExecution timeMemory
471484RainbowbunnyBroken Device (JOI17_broken_device)C++17
0 / 100
2 ms496 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; int num[] = {0, 0, 1, 0, 0, 1, 2, 3}; int sd[] = {0, 1, 1, 0, 2, 2, 2, 2}; void Anna(int n, long long X, int k, int P[]) { vector <int> A; vector <int> G; for(int i = 0; i < n; i++) { A.push_back(X & 1); X >>= 1; G.push_back(0); } for(int i = 0; i < k; i++) { G[P[i]] = 1; } int pos = 0; for(int i = 0; i < n; i += 3) { int tmp = G[i] + 2 * G[i + 1] + 4 * G[i + 2]; int t = 0; for(int j = 0; j < 8; j++) { if((tmp & j) == 0) { int zz = num[j], nn = 1; for(int k = 0; k < sd[j]; k++) { zz -= nn * A[pos + k]; nn *= 2; } if(zz == 0) { t = j; } } } for(int j = 0; j < 3; j++) { Set(i + j, (t >> j) & 1); } pos += sd[t]; assert(sd[t] + G[i] + G[i + 1] + G[i + 2] >= 2); } }
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; int num[] = {0, 0, 1, 0, 0, 1, 2, 3}; int sd[] = {0, 1, 1, 0, 2, 2, 2, 2}; long long Bruno(int n, int A[]) { vector <int> V; for(int i = 0; i < n; i += 3) { int tmp = A[i] + A[i + 1] * 2 + A[i + 2] * 4; for(int j = 0; j < sd[tmp]; j++) { V.push_back((num[tmp] >> j) & 1); } } long long ans = 0, bit = 1; for(int i = 0; i < 60; i++) { ans += bit * V[i]; bit *= 2; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...