#include "bits/stdc++.h"
#include "message.h"
using namespace std;
void send_message(vector<bool> M, vector<bool> C) {
vector<int> aPos;
for (int i = 0; i < 31; i++) if (!C[i]) aPos.push_back(i);
vector<bool> z(31, 0), o(31, 1);
map<int, vector<bool>> p = {{0, z}, {1, o}};
int first = aPos[0];
for (int i = 0; i < 5; i++) send_packet(p[1 & (first >> i)]);
for (int i = 0; i < 5; i++){
vector<bool> pkt(31, 0);
int k = 0;
for (int j = 0; j < 31; j++) if (!C[j]) {
pkt[j] = (aPos[k + 1] >> i) & 1;
k++;
if (k == 15) break;
}
send_packet(pkt);
}
for (int i = 0; i < 1024; i += 16){
vector<bool> pkt(31, 0);
int k = i;
for (int j = 0; j < 16; j++) {
pkt[aPos[j]] = M[k];
k++;
}
send_packet(pkt);
}
}
vector<bool> receive_message(vector<vector<bool>> R){
vector<int> aPos(16, 0);
int first = 0;
for (int i = 0; i < 5; i++){
int z = 0;
for (int j = 0; j < 31; j++) z += R[i][j] == 0;
first |= (z <= 15) << i;
}
aPos[0] = first;
for (int k = 1; k < 16; k++) for (int j = 5; j < 10; j++) aPos[k] |= R[j][aPos[k - 1]] << (j - 5);
vector<bool> M;
for (int j = 10; j < 74; j++) for (auto &e: aPos) M.push_back(R[j][e]);
return M;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |