#include "message.h"
#include <bits/stdc++.h>
#define endl "\n"
#define ll long long
using namespace std;
void send_message(vector<bool> a, vector<bool> c)
{
    vector<bool> msg(31, 0);
    vector<ll> fixed;
    for (ll i = 0; i < 30; i++)
    {
        send_packet(vector<bool>(31, c[i]));
        if (c[i] == 0) fixed.push_back(i);
    }
    if (c[30] == 0) fixed.push_back(30);
    for (ll i = 0; i < 16; i++) msg[fixed[i]] = (a.size() >> i & 1);
    send_packet(msg);
    for (ll i = 0; i < a.size(); i += 16)
    {
        for (ll j = 0; j + i < a.size() and j < 16; j++) msg[fixed[j]] = a[i + j]; 
        send_packet(msg);
    }
}
vector<bool> receive_message(vector<vector<bool>> a)
{
    vector<bool> c(31, 1);
    for (ll i = 0; i < 30; i++)
    {
        ll cnt0 = 0;
        for (ll j : a[i]) cnt0 += j == 0;
        if (cnt0 >= 16) c[i] = 0;
        else c[i] = 1;
    }
    if (count(c.begin(), c.end(), 0) != 16) c[30] = 0;
    vector<ll> fixed;
    ll sz = 0;
    for (ll i = 0; i < 31; i++) if (c[i] == 0) fixed.push_back(i);
    for (ll i = 0; i < 16; i++) if (a[30][fixed[i]]) sz += 1 << i;
    vector<bool> ans(sz);
    for (ll i = 0; i < sz; i++) ans[i] = a[31 + (i >> 4)][fixed[i & 15]];
    return ans;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |