# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1164613 | CDuong | Broken Device (JOI17_broken_device) | C++20 | 22 ms | 1572 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 time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |