#include "message.h"
//#include "grader.cpp"
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize ("Ofast")
const int B = 31;
void send_message (vector <bool> m, vector <bool> c) {
int u = 0, v = 0;
vector <int> z;
for (int i = 0; i < (int)c.size(); i++) {
send_packet(vector <bool> (B, c[i]));
if (!c[i]) {
z.push_back(i);
}
u += c[i]; v += !c[i];
if (u == 15) {
break;
}
if (v == 2) {
for (int j = i + 1; j < (int)c.size(); j += 2) {
vector <bool> t(B, false);
t[z[0]] = c[j];
if (j != (int)c.size() - 1) {
t[z[1]] = c[j + 1];
}
send_packet(t);
}
break;
}
if (v == 16) {
break;
}
if (v == 15 && i == (int)c.size() - 2) {
break;
}
}
bool flag = 0;
if (m.back() == 0) {
flag = 1;
for (int i = 0; i < (int)m.size(); i++) {
m[i] = !m[i];
}
}
int ii[16], x = 0;
for (int i = 0; i < B; i++) {
if (!c[i]) {
ii[x++] = i;
}
}
for (int i = 0; i < (int)m.size(); i += 16) {
vector <bool> e(B, false);
for (int j = i; j < min((int)m.size(), i + 16); j++) {
e[ii[j - i]] = m[j];
}
send_packet(e);
}
send_packet(vector <bool> (B, flag));
return;
}
int majority (vector <bool> &x) {
int c[2] = {};
for (auto i : x) {
c[i]++;
}
if (c[0] < c[1]) return 1;
else return 0;
}
vector <bool> receive_message (vector <vector <bool>> R) {
int C[B] = {};
int u = 0, v = 0;
int ind = -1;
vector <int> z;
for (int i = 0; i < B; i++) {
C[i] = majority(R[i]);
if (!C[i]) {
z.push_back(i);
}
u += C[i]; v += !C[i];
ind = i;
if (u == 15 || (v == 15 && i == B - 2)) {
for (int j = i + 1; j < B; j++) {
C[j] = 0;
}
break;
}
if (v == 2) {
int x = ind + 1;
while (x < B) {
ind++;
C[x] = R[ind][z[0]];
if (x != B - 1) {
C[x + 1] = R[ind][z[1]];
}
x += 2;
}
break;
}
if (v == 16) {
for (int j = i + 1; j < B; j++) {
C[j] = 1;
}
break;
}
}
vector <bool> m;
for (int i = ind + 1; i + 1 < (int)R.size(); i++) {
for (int j = 0; j < B; j++) {
if (!C[j]) m.push_back(R[i][j]);
}
}
while (m.back() == 0) {
m.pop_back();
}
if (majority(R.back())) {
for (int i = 0; i < (int)m.size(); i++) {
m[i] = !m[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... |