#include "message.h"
#include <bits/stdc++.h>
using namespace std;
void sett(vector<bool>& vec,vector<int>& vecc,vector<bool>& vec2)
{
for(int i=0;i<31;i++)
vec2.push_back(0);
for(int i=0;i<vec.size();i++)
{
vec2[vecc[i]]=vec[i];
}
}
void send_message(std::vector<bool> M, std::vector<bool> C)
{
vector<int> vecc;
for(int i=0;i<C.size();i++)
{
vector<bool> vec;
for(int i=0;i<31;i++)
vec.push_back(C[i]);
send_packet(vec);
if(C[i]==0)
vecc.push_back(i);
}
int br=M.size();
vector<bool> vec2;
for(int i=0;i<16;i++,br=br>>1)
{
vec2.push_back(br&1);
}
vector<bool> temp;
sett(vec2,vecc,temp);
send_packet(temp);
vec2.clear();
temp.clear();
for(int i=0;i<M.size();i++)
{
vec2.push_back(M[i]);
if(i%16==15 || i==M.size()-1)
{
sett(vec2,vecc,temp);
send_packet(temp);
vec2.clear();
temp.clear();
}
}
}
std::vector<bool> receive_message(std::vector<std::vector<bool>> R)
{
vector<int> vecc;
for(int i=0;i<31;i++)
{
int cnt=0;
for(auto it : R[i])
{
if(it==0)
cnt++;
}
if(cnt>=16)
vecc.push_back(i);
}
int sz=0;
for(int i=0;i<16;i++)
{
sz+=(R[31][vecc[i]])*pow(2,i);
}
vector<bool> res;
for(int i=32;i<R.size();i++)
{
for(int j=0;j<16;j++)
{
if(sz%16!=0 && j==sz%16)
break;
int pos=vecc[j];
res.push_back(R[i][pos]);
}
}
return res;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |