#include "message.h"
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
//#define int long long
#define pii pair<int,int>
#define vi vector<int>
#define ff first
#define ss second
#define sp << " " <<
#define all(x) x.begin(),x.end()
#define big(x) ((int)(x.size()))
using namespace std;
void send_message(std::vector<bool> M, std::vector<bool> C) {
std::vector<bool> A(31, 0);
vi clean;
for (int i = 0;i<31;i++) {
for (int j = 0;j<31;j++) A[j] = C[i];
if (!C[i]) clean.push_back(i);
send_packet(A);
}
int S = big(M);
vector<bool> szpack(31,0);
for (int i = 0;i<10;i++) {
szpack[clean[i]] = !!(S&(1<<i));
}
send_packet(szpack);
int j = 0;
for (int i = 0;i<(S+15)/16;i++) {
int ptr = 0;
for(int t = 0;t<16;t++) {
A[clean[ptr++]] = M[j++];
}
send_packet(A);
}
}
std::vector<bool> receive_message(std::vector<std::vector<bool>> R) {
int rsz = R.size();
/* for (int i = 0;i<rsz;i++) {
for (int j = 0;j<31;j++) cerr << R[i][j];
cerr << '\n';
} */
vi clean;
for (int i = 0;i<31;i++) {
int z = 0,o = 0;
for (auto it : R[i]) {
if (it) o++;
else z++;
}
if (z > o) clean.push_back(i);
}
int s = 0;
for (int i = 0;i<10;i++) {
if (R[31][clean[i]]) s+=(1<<i);
}
vector<bool> M(s);
int j = 0;
for (int i = 0;i<(s+15)/16;i++) {
int ptr = 0;
for (int t = 0;t<16;t++) {
M[j++] = R[32+i][clean[ptr++]];
}
}
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... |