제출 #1276629

#제출 시각아이디문제언어결과실행 시간메모리
1276629avighna메시지 (IOI24_message)C++20
29.32 / 100
567 ms824 KiB
#include <bits/stdc++.h> std::vector<bool> send_packet(std::vector<bool> A); void send_message(std::vector<bool> M, std::vector<bool> C) { auto send = [&](const std::string &s) { std::vector<bool> a(s.length()); for (int i = 0; i < s.length(); ++i) { a[i] = s[i] == '1'; } send_packet(a); }; auto send_num = [&](int n) { std::string msg(31, '0'); for (int i = 0, j = 0; i < 16; ++i, ++j) { while (C[j]) { j++; } msg[j] = !!(n & 1 << i) + '0'; } send(msg); }; for (bool i : C) { send(std::string(31, i + '0')); } send_num(M.size()); for (int i = 0; i < M.size(); i += 16) { int x = 0; for (int j = 0; j < 16 and i + j < M.size(); ++j) { x += int(M[i + j]) << j; } send_num(x); } } std::vector<bool> receive_message(std::vector<std::vector<bool>> R) { auto recv = [&](std::vector<bool> P) { int o = 0, z = 0; for (bool i : P) { o += i, z += !i; } return o > z; }; std::vector<bool> C(31); int cur = 0; for (int i = 0; i < 31; ++i) { C[i] = recv(R[cur++]); } auto recv_num = [&](std::vector<bool> P) { int ans = 0; for (int i = 0, j = 0; i < 16; ++i, ++j) { while (C[j]) { j++; } ans += int(P[j]) << i; } return ans; }; int size = recv_num(R[cur++]); std::vector<bool> M(size); for (int i = 0; i < size; i += 16) { int x = recv_num(R[cur++]); for (int j = 0; j < 16 and i + j < size; ++j) { M[i + j] = x & 1 << j; } } return M; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...