Submission #1184779

#TimeUsernameProblemLanguageResultExecution timeMemory
1184779SebMessage (IOI24_message)C++20
0 / 100
324 ms848 KiB
#include <bits/stdc++.h> #include "message.h" using namespace std; typedef long long ll; void send_message(std::vector<bool> M, std::vector<bool> C) { for (int i = 0; i < 31; i++) C[i] = !C[i]; vector<bool> A(31, false), B(31, true); for (int i = 0; i < 31; i++) { if (C[i] == false) send_packet(A); else { send_packet(B); } } ll SZ = M.size(); for (int i = 0; i < 31; i++) { if (C[i]) { A[i] = (SZ%2 == 0 ? false : true); SZ /= 2; } send_packet(A); } ll idx = 0; while (idx < M.size()) { A = vector<bool> (31, false); for (int i = 0; i < 31; i++) if (C[i]) A[i] = M[idx++]; send_packet(A); } return; } std::vector<bool> receive_message(std::vector<std::vector<bool>> R) { vector<bool> C(31, false), V; ll idx = 0, SZ = 0; for (auto &it : R) { ll cnt = 0; for (int i = 0; i < 31; i++) { if (it[i]) cnt++; if (C[i]) V.push_back(it[i]); } if (idx < 31) { C[idx++] = ((cnt > 15) ? true : false); V.clear(); } if (idx == 31) { ll aux = 1; for (int i = 0; i < V.size(); i++) { SZ += aux * (V[i] ? 1 : 0); aux *= 2; } idx++; } } while (V.size() > SZ) V.pop_back(); return V; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...