Submission #289047

#TimeUsernameProblemLanguageResultExecution timeMemory
289047fishy15Broken Device (JOI17_broken_device)C++14
100 / 100
73 ms3144 KiB
#include "Annalib.h" #include <vector> using namespace std; void Anna(int N, long long X, int K, int P[]) { vector<bool> works(N, true); vector<bool> toset(N, false); for (int i = 0; i < K; i++) { works[P[i]] = false; } for (int i = 0; i < N; i += 3) { int cnt = works[i] + works[i + 1] + works[i + 2]; if (cnt == 3) { int v = X % 4; if (v == 0) { toset[i] = 1; } else if (v == 1) { toset[i + 1] = 1; toset[i + 2] = 1; } else if (v == 2) { toset[i] = 1; toset[i + 2] = 1; } else { toset[i] = 1; toset[i + 1] = 1; toset[i + 2] = 1; } X >>= 2; } else if (cnt == 2) { if (!works[i]) { if (X & 1) { toset[i + 2] = 1; } else { toset[i + 1] = 1; } X >>= 1; } else if (!works[i + 1]) { if (X & 1) { toset[i + 2] = 1; X >>= 1; } else { if (X % 4 == 0) { toset[i] = 1; } else { toset[i] = 1; toset[i + 2] = 1; } X >>= 2; } } else { if (X & 1) { toset[i] = 1; toset[i + 1] = 1; } else { toset[i + 1] = 1; } X >>= 1; } } } for (int i = 0; i < N; i++) { Set(i, toset[i]); } }
#include "Brunolib.h" #define ll long long long long Bruno(int N, int A[]){ int d = 0; ll ans = 0; for (int i = 0; i < N; i += 3) { if (d > 60) break; int v = 4 * A[i] + 2 * A[i + 1] + A[i + 2]; if (v == 1) { ans += 1LL << d; d++; } else if (v == 2) { d++; } else if (v == 3) { ans += 1LL << d; d += 2; } else if (v == 4) { d += 2; } else if (v == 5) { ans += 2LL << d; d += 2; } else if (v == 6) { ans += 1LL << d; d++; } else if (v == 7) { ans += 3LL << d; d += 2; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...