제출 #288977

#제출 시각아이디문제언어결과실행 시간메모리
288977fishy15Broken Device (JOI17_broken_device)C++14
51 / 100
51 ms3072 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) { toset[i] = 1; toset[i + 1] = X & 1; X >>= 1; toset[i + 2] = X & 1; X >>= 1; } else if (cnt == 2) { if (X & 1) { if (works[i + 1]) { toset[i + 1] = 1; } else { toset[i + 2] = 1; } X >>= 1; } else { if (!works[i]) { toset[i + 1] = 1; toset[i + 2] = 1; X >>= 1; } else if (X % 4 == 0) { toset[i] = 1; X >>= 2; } } } } 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 dig = 0; ll ans = 0; for (int i = 0; i < N; i += 3) { if (dig > 60) break; if (A[i]) { ans += (1LL << dig) * A[i + 1]; dig++; ans += (1LL << dig) * A[i + 2]; dig++; } else { if (A[i] || A[i + 1] || A[i + 2]) { int v = A[i + 1] ^ A[i + 2]; ans += (1LL << dig) * v; dig++; } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...