#include <bits/stdc++.h>
#include "message.h"
using namespace std;
void send_message(vector<bool> a, vector<bool> c) {
vector<int> zeros;
for (int i = 0; i < 31; i++) {
vector<bool> cur(31, c[i]);
if (c[i] == 0) {
zeros.push_back(i);
}
send_packet(cur);
}
int n = a.size();
int left = n;
int i = 15;
for (; i < n; i += 16) {
left -= 16;
vector<bool> cur(31);
int k = 0;
for (int j = i - 15; j <= i; j++) {
cur[zeros[k++]] = a[j];
}
send_packet(cur);
}
i -= 16;
int f = left;
vector<bool> cnt(31);
for (auto j : zeros) {
if (left == 0) break;
cnt[j] = 1;
left--;
}
send_packet(cnt);
i++;
vector<bool> finisher(31);
int k = 0;
for (; i < a.size(); i++) {
if (f == 0) break;
f--;
finisher[zeros[k++]] = a[i];
}
send_packet(finisher);
}
vector<bool> receive_message(vector<vector<bool>> r) {
vector<bool> correct(31);
vector<int> zeros;
for (int i = 0; i < 31; i++) {
int one = count(r[i].begin(), r[i].end(), 1);
int zero = 31 - one;
if (one > zero) {
correct[i] = 1;
} else {
correct[i] = 0;
zeros.push_back(i);
}
}
int n = r.size();
vector<bool> ret;
for (int i = 31; i < n - 2; i++) {
auto a = r[i];
for (auto j : zeros) {
ret.push_back(a[j]);
}
}
int cnt = 0;
for (auto i : zeros) {
cnt += r[n - 2][i];
}
for (auto i : zeros) {
if (cnt == 0) break;
cnt--;
ret.push_back(r[n - 1][i]);
}
return ret;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |