# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
908659 | GrandTiger1729 | Flight to the Ford (BOI22_communication) | C++17 | 2125 ms | 3184 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;
void encode(int N, int X)
{
int ans = 0;
vector<int> res[2];
int x = 0;
res[0].push_back(0);
int re[4]{};
bool f = 0;
for (int y = 1; y <= 29; y++)
{
if (1 << y > N)
{
break;
}
if (!f)
{
re[0] = send(X >> x & 1);
}
re[1] = send(X >> y & 1);
re[2] = send(X >> y & 1);
if (re[1] == re[2])
{
ans ^= re[1] << y;
f = 0;
continue;
}
re[3] = send(X >> x & 1);
if (re[0] == re[3])
{
for (auto &i : res[0])
{
ans ^= re[0] << i;
}
for (auto &i : res[1])
{
ans ^= (!re[0]) << i;
}
res[0] = res[1] = vector<int>();
res[0].push_back(y);
x = y;
f = 0;
}
else
{
res[re[0] ^ re[1] ^ 1].push_back(y);
re[0] = re[3];
f = 1;
}
}
}
pair<int, int> decode(int N)
{
int ans = 0;
vector<int> res[2];
int x = 0;
res[0].push_back(0);
int re[4]{};
bool f = 0;
for (int y = 1; y <= 29; y++)
{
if (1 << y > N)
{
break;
}
if (!f)
{
re[0] = receive();
}
re[1] = receive();
re[2] = receive();
if (re[1] == re[2])
{
ans ^= re[1] << y;
f = 0;
continue;
}
re[3] = receive();
if (re[0] == re[3])
{
for (auto &i : res[0])
{
ans ^= re[0] << i;
}
for (auto &i : res[1])
{
ans ^= (!re[0]) << i;
}
res[0] = res[1] = vector<int>();
res[0].push_back(y);
x = y;
f = 0;
}
else
{
res[re[0] ^ re[1] ^ 1].push_back(y);
re[0] = re[3];
f = 1;
}
}
int ans1 = ans, ans2 = ans;
for (auto &i : res[0])
{
ans1 ^= 1 << i;
}
for (auto &i : res[1])
{
ans2 ^= 1 << i;
}
ans1 = clamp(ans1, 1, N);
ans2 = clamp(ans2, 1, N);
return make_pair(ans1, ans2);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |