Submission #601092

#TimeUsernameProblemLanguageResultExecution timeMemory
601092alextodoranFlight to the Ford (BOI22_communication)C++17
0 / 100
1279 ms1872 KiB
/** ____ ____ ____ ____ ____ ||a |||t |||o |||d |||o || ||__|||__|||__|||__|||__|| |/__\|/__\|/__\|/__\|/__\| **/ #include <bits/stdc++.h> #include "communication.h" using namespace std; typedef long long ll; const int SEED = 3000; int send (int s); void encode (int N, int X) { mt19937 rnd(SEED); N--; X--; while (N > 0) { int bit = X % 2; bool lied = false; while (true) { int r[] = {(rnd() % 2 == 0), (rnd() % 2 == 0)}; if (send(r[bit]) != r[!bit]) { if (lied == true) { break; } lied = true; } else { lied = false; } } N /= 2; X /= 2; } } int receive (); pair <int, int> decode (int N) { mt19937 rnd(SEED); N--; int X = 0; int k = 0; while (N > 0) { bool lied[] = {false, false}; while (true) { int r[] = {(rnd() % 2 == 0), (rnd() % 2 == 0)}; int rec = receive(); bool stop = false; for (int bit : {0, 1}) { if (rec != r[bit]) { if (lied[bit] == true) { X |= (!bit << k); stop = true; break; } lied[bit] = true; } else { lied[bit] = false; } } if (stop == true) { break; } } N /= 2; k++; } X++; return make_pair(X, X); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...