# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
614285 | Plurm | Flight to the Ford (BOI22_communication) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "communication.h"
#include <bits/stdc++.h>
using namespace std;
const int mask1 = 0b11101100010010110111101010000;
void sendbit(int bit) {
if (bit) {
int nxtflip = 0;
for (int i = 0; i < 30; i++) {
int cur = (mask1 >> i) & 1;
int rec = send(cur ^ nxtflip);
nxtflip = rec == cur ? 1 : 0;
}
} else {
for (int i = 0; i < 30; i++) {
int cur = ((mask1 >> i) & 1) ^ 1;
int rec = send(cur ^ nxtflip);
nxtflip = rec == cur ? 1 : 0;
}
}
}
void encode(int N, int X) {
// N = 3
if (X == 2)
sendbit(1);
else
sendbit(0);
}
int recbit() {
int cnt[2];
cnt[0] = cnt[1] = 0;
for (int i = 0; i < 30; i++) {
int rec = receive();
if (((rec >> i) & 1) == ((mask1 >> i) & 1))
cnt[1]++;
else
cnt[0]++;
}
return cnt[0] > cnt[1] ? 0 : 1;
}
std::pair<int, int> decode(int N) { return {1, (recbit() ? 2 : 3)}; }