#include "message.h"
#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
void send_message(vector<bool> M, vector<bool> C) {
int x = -1;
for(int i=0;i<31;i++){
if(C[i]==0){
x=i;
break;
}
}
for(int i=0;i<5;i++){
vector<bool> v(31);
bool b = (x>>i)&1;
for(int j=0;j<31;j++) v[j]=b;
send_packet(v);
}
vector<bool> msg;
int S = M.size();
int z = 1025 - S - 1;
for(int i=0;i<z;i++) msg.pb(0);
msg.pb(1);
for(bool b:M) msg.pb(b);
int ptr = 0;
for(int i=0;i<31;i++){
vector<bool> v(31);
v[x] = C[i];
for(int j=0;j<31 && ptr<msg.size();j++){
if(j==x) continue;
if(C[j]==0){
v[j]=msg[ptr++];
}
}
send_packet(v);
}
while(ptr < msg.size()){
vector<bool> v(31);
for(int j=0;j<31 && ptr<msg.size();j++){
if(C[j]==0){
v[j]=msg[ptr++];
}
}
send_packet(v);
}
}
vector<bool> receive_message(vector<vector<bool>> R) {
int x=0;
for(int i=0;i<5;i++){
int c=0;
for(int j=0;j<31;j++) c+=R[i][j];
if(c>=16) x |= (1<<i);
}
vector<bool> C(31);
for(int i=0;i<31;i++){
C[i]=R[5+i][x];
}
vector<bool> msg;
for(int i=5;i<R.size();i++){
for(int j=0;j<31;j++){
if(j!=x && C[j]==0){
msg.pb(R[i][j]);
}
}
}
int pos=0;
while(pos<msg.size() && msg[pos]==0) pos++;
pos++;
vector<bool> M;
for(int i=pos;i<msg.size();i++) M.pb(msg[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... |