제출 #1184395

#제출 시각아이디문제언어결과실행 시간메모리
1184395SebMessage (IOI24_message)C++20
0 / 100
75 ms844 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) { 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); break; } } ll idx = 0, aux_idx = 0; while (C[idx] == false) idx++; aux_idx = idx + 1; while (idx < 30) { A = vector<bool> (31, false); for (int i = 0; i <= idx; i++) if (C[i]) if (aux_idx < 31) A[i] = C[aux_idx++]; idx = aux_idx - 1; send_packet(A); } 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; 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) { if (V.empty()) C[idx++] = (cnt > 15); else for (int i = 0; i < V.size(); i++) if (idx < 31) C[idx++] = V[i]; V.clear(); } } return V; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...