제출 #1164613

#제출 시각아이디문제언어결과실행 시간메모리
1164613CDuongBroken Device (JOI17_broken_device)C++20
100 / 100
22 ms1572 KiB
#include "Annalib.h" #include <bits/stdc++.h> #define taskname "" #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define i64 long long #define isz(x) (int)x.size() #define FOR(i, l, r) for (int i = l; i < r; ++i) using namespace std; void Anna(int N, i64 X, int K, int P[]) { vector<int> a(N, -1); for (int i = 0; i < K; ++i) { a[P[i]] = 0; } deque<int> dq(120); for (int i = 0; i < 60; ++i) { dq[i] = X >> i & 1; } auto send = [&](int l, int val) -> void { for (int i = 0; i < 3; ++i) Set(l + i, val >> i & 1); }; FOR(i, 0, 50) { int sum = 0, l = i * 3, r = (i + 1) * 3; FOR(j, l, r) sum += a[j] == 0; if (sum >= 2) { send(l, 0); } else if (sum == 1) { if (a[l] == 0) { send(l, dq[0] ? 6 : 4); dq.pop_front(); } if (a[l + 1] == 0) { send(l, dq[0] ? 1 : 4); dq.pop_front(); } if (a[l + 2] == 0) { send(l, dq[0] ? 1 : (dq[1] ? 3 : 2)); if (not dq[0]) dq.pop_front(); dq.pop_front(); } } else { int val = dq[0] + dq[1] * 2; if (val == 0) send(l, 2); if (val == 1) send(l, 5); if (val == 2) send(l, 3); if (val == 3) send(l, 7); dq.pop_front(); dq.pop_front(); } } }
#include "Brunolib.h" #include <bits/stdc++.h> #define taskname "" #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define i64 long long #define isz(x) (int)x.size() #define FOR(i, l, r) for (int i = l; i < r; ++i) using namespace std; i64 Bruno(int N, int A[]) { vector<i64> res; FOR(i, 0, 50) { int val = 0, l = i * 3, r = (i + 1) * 3; FOR(j, l, r) val += A[j] << (j - l); if (val == 0) continue; if (val == 1) res.emplace_back(1); if (val == 2) res.emplace_back(0), res.emplace_back(0); if (val == 3) res.emplace_back(0), res.emplace_back(1); if (val == 4) res.emplace_back(0); if (val == 5) res.emplace_back(1), res.emplace_back(0); if (val == 6) res.emplace_back(1); if (val == 7) res.emplace_back(1), res.emplace_back(1); } i64 ans = 0; for (int i = 0; i < 60; ++i) { ans += res[i] << i; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...