Submission #1221520

#TimeUsernameProblemLanguageResultExecution timeMemory
1221520nibertMessage (IOI24_message)C++20
0 / 100
185 ms840 KiB
#include <iostream>
#include <vector>
using namespace std;

vector<vector<bool>> sent_packets;
vector<int> safe_positions;

extern vector<bool> send_packet(vector<bool> A);

void send_message(vector<bool> M, vector<bool> C) {
    sent_packets.clear();
    safe_positions.clear();

    for (int i = 0; i < 31; ++i) {
        vector<bool> packet(31, 0);
        packet[i] = 1;
        vector<bool> tainted = send_packet(packet);
        sent_packets.push_back(tainted);
        if (tainted[i] == 1) {
            safe_positions.push_back(i);
        }
    }

    int idx = 0;
    while (idx < M.size()) {
        vector<bool> packet(31, 0);
        for (int j = 0; j < 16 && idx < M.size(); ++j, ++idx) {
            packet[safe_positions[j]] = M[idx];
        }
        sent_packets.push_back(send_packet(packet));
    }
}

vector<bool> receive_message(vector<vector<bool>> R) {
    vector<int> safe_positions;
    vector<bool> result;

    for (int i = 0; i < 31; ++i) {
        if (R[i][i] == 1) {
            safe_positions.push_back(i);
        }
    }

    for (int i = 31; i < R.size(); ++i) {
        for (int pos : safe_positions) {
            result.push_back(R[i][pos]);
        }
    }
    return result;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...