Submission #1223657

#TimeUsernameProblemLanguageResultExecution timeMemory
1223657The_SamuraiBroken Device (JOI17_broken_device)C++20
0 / 100
19 ms1344 KiB
#include "Annalib.h" #include "bits/stdc++.h" using namespace std; void Anna(int n, long long x, int k, int P[] ){ assert(n == 150); vector<int> val(n, 1); for (int i = 0; i < k; i++) val[P[i]] = 0; auto check = [&](long long x) -> bool { vector<int> vec(61); for (int i = 0; i <= 60; i++) vec[i] = x >> i & 1ll; int i, j; for (i = 0, j = 0; i < 150 and j < 61; i += 2) { if (val[i] + val[i + 1] == 0) continue; if (val[i] == 0 and val[i + 1] == 1 and vec[j] == 0) continue; if (val[i] == 1 and val[i + 1] == 0 and vec[j] == 1) continue; j++; } if (j < 61) return false; for (i = 0, j = 0; i < 150 and j < 61; i += 2) { bool cont = val[i] + val[i + 1] == 0; cont |= val[i] == 0 and val[i + 1] == 1 and vec[j] == 0; cont |= val[i] == 1 and val[i + 1] == 0 and vec[j] == 1; if (cont) { Set(i, 0); Set(i + 1, 0); continue; } Set(i, 1); Set(i + 1, vec[j++]); } for (; i < 150; i++) Set(i, 0); return true; }; if (check(x)) return; const long long N = ((1ll << 61) - 1); if (check(x ^ N)) return; for (int i = 0; i < n; i++) Set(i, 0); }
#include "Brunolib.h" #include "bits/stdc++.h" using namespace std; long long Bruno( int n, int a[] ){ long long ans = 0; for (int i = 0, j = 0; i < 150 and j < 61; i += 2) { if (a[i] + a[i + 1] == 0) continue; if (a[i + 1]) ans |= 1ll << j; } const long long N = ((1ll << 61) - 1); return min(ans, ans ^ N); }
#Verdict Execution timeMemoryGrader output
Fetching results...