Submission #908641

#TimeUsernameProblemLanguageResultExecution timeMemory
908641GrandTiger1729Flight to the Ford (BOI22_communication)C++17
74 / 100
2285 ms3568 KiB
#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); for (int y = 1; y <= 29; y++) { if (1 << y > N) { break; } int re[4]{}; 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; 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; } else { res[re[0] ^ re[1] ^ 1].push_back(y); } } } pair<int, int> decode(int N) { int ans = 0; vector<int> res[2]; int x = 0; res[0].push_back(0); for (int y = 1; y <= 29; y++) { if (1 << y > N) { break; } int re[4]{}; re[0] = receive(); re[1] = receive(); re[2] = receive(); if (re[1] == re[2]) { ans ^= re[1] << y; 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; } else { res[re[0] ^ re[1] ^ 1].push_back(y); } } 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)

communication.cpp: In function 'std::pair<int, int> decode(int)':
communication.cpp:52:9: warning: variable 'x' set but not used [-Wunused-but-set-variable]
   52 |     int x = 0;
      |         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...