Submission #580180

#TimeUsernameProblemLanguageResultExecution timeMemory
580180EliasFlight to the Ford (BOI22_communication)C++17
15 / 100
82 ms1780 KiB
#include <bits/stdc++.h> #ifndef _DEBUG #include "communication.h" #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx") #endif using namespace std; int len = 10; vector<int> numbers = {819, 343, 420}; #ifdef _DEBUG void send(int x) { cout << x; } int receive() { int x; cin >> x; return x; } #endif void encode(int N, int X) { int number = numbers[X - 1]; for (int i = 0; i < len; i++) send(bool(number & (1 << i))); } pair<int, int> decode(int N) { int number = 0; for (int i = 0; i < len; i++) { number |= receive() << i; } vector<int> pos; for (int b = 0; b < (1 << len); b++) { bool valid = true; for (int i = 2; i < len; i++) if (b & (1 << i) && b & (1 << (i - 1))) valid = false; if (!valid) continue; int newNum = number ^ b; for (int i = 0; i < 3; i++) if (newNum == numbers[i] && !(pos.size() == 1 && pos[0] == i)) pos.push_back(i); } while (pos.size() < 2) pos.push_back(0); return {pos[0] + 1, pos[1] + 1}; } #ifdef _DEBUG int main() { int n; cin >> n; encode(3, n); cout << "\n"; auto res = decode(3); cout << res.first << " " << res.second << "\n"; } #endif
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...