Submission #1184386

#TimeUsernameProblemLanguageResultExecution timeMemory
1184386SebMessage (IOI24_message)C++20
0 / 100
51 ms836 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);
    }
    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++) {
            cnt += (it[i] == true);
            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...