#include "message.h"
#include <bits/stdc++.h>
using namespace std;
#define arr array
#define vec vector
bool bt(int x, int i) { return x & (1 << i); }
int wt(int i) { return (1 << i); }
void send_message(vec<bool> _vl, vec<bool> _hr) {
int sz;
vec<int> vl;
arr<int, 16> my{};
vec<arr<int, 31>> sn;
sz = _vl.size();
for (int i = 0; i <= sz - 1; i++) vl.push_back(_vl[i]);
int nx = 0;
for (int i = 0; i <= 30; i++)
if (!_hr[i]) my[nx++] = i;
sn.resize(70 + my[0]);
nx = 0;
for (int i = 0; i <= 15; i++) {
if (i == 0) {
for (int j = 0; j <= 10; j++) sn[j][my[i]] = bt(sz, j);
for (int j = 11; j <= 15; j++) sn[j][my[i]] = bt(my[i + 1], j - 11);
for (int j = 16; j <= 69; j++) {
if (nx == sz) continue;
sn[j][my[i]] = vl[nx++];
}
} else if (i == 15) {
for (int j = 0; j <= 69; j++) {
if (nx == sz) continue;
sn[j][my[i]] = vl[nx++];
}
} else {
for (int j = 0; j <= 4; j++) sn[j][my[i]] = bt(my[i + 1], j);
for (int j = 5; j <= 69; j++) {
if (nx == sz) continue;
sn[j][my[i]] = vl[nx++];
}
}
}
assert(nx == sz);
for (int i = 0; i <= sn.size() - 1; i++) {
vec<bool> x;
for (int j = 0; j <= 30; j++) x.push_back(sn[i][j]);
send_packet(x);
}
}
vec<bool> receive_message(vec<vec<bool>> _sn) {
int sz;
vec<int> vl;
arr<int, 16> my{};
vec<arr<int, 31>> sn;
sn.resize(_sn.size());
for (int i = 0; i <= sn.size() - 1; i++)
for (int j = 0; j <= 30; j++)
sn[i][j] = _sn[i][j];
my[0] = sn.size() - 70;
for (int i = 0; i <= 15; i++) {
if (i == 0) {
for (int j = 0; j <= 10; j++)
if (sn[j][my[i]]) sz += wt(j);
for (int j = 11; j <= 15; j++)
if (sn[j][my[i]]) my[i + 1] += wt(j - 11);
for (int j = 16; j <= 69; j++) {
if (vl.size() == sz) continue;
vl.push_back(sn[j][my[i]]);
}
} else if (i == 15) {
for (int j = 0; j <= 69; j++) {
if (vl.size() == sz) continue;
vl.push_back(sn[j][my[i]]);
}
} else {
for (int j = 0; j <= 4; j++)
if (sn[j][my[i]]) my[i + 1] += wt(j);
for (int j = 5; j <= 69; j++) {
if (vl.size() == sz) continue;
vl.push_back(sn[j][my[i]]);
}
}
}
assert(vl.size() == sz);
vec<bool> ans;
for (int i = 0; i <= sz - 1; i++) ans.push_back(vl[i]);
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... |