#include "message.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
const int N = 31;
void send_message(std::vector<bool> M, std::vector<bool> C) {
assert(C.size()==N);
for (bool x : C) send_packet(vector<bool>(N, x));
vector<int> ok;
for (int i=0; i<N; i++) if (!C[i]) ok.pb(i);
assert(ok.size()==16);
auto cur = ok.begin();
vector<bool> pac(31, false);
for (bool x : M) {
if (cur==ok.end()) {
send_packet(pac);
pac = vector<bool>(31, false);
cur = ok.begin();
}
pac[*cur] = x;
cur++;
}
if (cur == ok.end()) {
send_packet(pac);
pac = vector<bool>(31, false);
cur = ok.begin();
}
pac[*cur] = true;
send_packet(pac);
}
std::vector<bool> receive_message(std::vector<std::vector<bool>> R) {
vector<bool> C(N);
vector<bool> M;
for (int i=0; i<N; i++) {
auto vec = R[i];
int cnt[2] {};
for (bool x : vec) cnt[x]++;
if (cnt[0]<cnt[1]) C[i]=1;
else C[i]=0;
}
for (int i=N; i+1 < R.size(); i++) {
auto vec = R[i];
for (int j=0; j<N; j++) if (!C[j]) M.pb(vec[j]);
}
auto vec = R.back();
int lst=0;
for (int i=0; i<N; i++) if (!C[i] && vec[i]) lst=i;
for (int i=0; i<lst; i++) if (!C[i]) M.pb(vec[i]);
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... |