#include <bits/stdc++.h>
#include "message.h"
using namespace std;
void send_message(std::vector<bool> M, std::vector<bool> C) {
vector<int> controlled;
for (int i = 0; i < 31; ++i)
{
if(!C[i]) controlled.push_back(i);
}
for (int i = 0; i < 5; ++i)
{
vector<bool> A(31,0);
for (int j = 0; j < 16; ++j)
{
A[controlled[j]] = ((1<<i) & controlled.back());
}
send_packet(A);
}
int S = M.size();
vector<bool> A(31,0);
for (int i = 0; i < 11; ++i)
{
A[controlled[i]] = ((1<<i) & S) ;
}
int k = 0;
int j = 0;
for (int i = 11; i < 15; ++i)
{
A[controlled[i]] = M[min(S-1,k++)];
}
A[controlled.back()]=C[j++];
send_packet(A);
while(k <= S || j<=30){
for (int i = 0; i < 15; ++i)
{
A[controlled[i]] = M[min(S-1,k++)];
}
A[controlled.back()]=C[min(30,j++)];
send_packet(A);
}
}
std::vector<bool> receive_message(std::vector<std::vector<bool>> R) {
vector<int> nabba[32];
for (int i = 0; i < 31; ++i)
{
int cnt=0;
for (int j = 0; j < 5; ++j)
{
//cout <<R[j][i]<<" ";
cnt+=(R[j][i]<<j);
}//cout <<endl;
nabba[cnt].push_back(i);
}
int control=0;
//cout <<"hey"<<endl;
for (int i = 0; i < 31; ++i){
//cout << (int)nabba[i].size() <<" ";
if((int)nabba[i].size()>=16)
control = i;
}//cout <<endl;
//cout <<control<<endl;
vector<bool> C(31,0);
vector<int> controlled;
for (int i = 5; i < 36; ++i)
{
C[i-5]=R[i][control];
if(!C[i-5]) controlled.push_back(i-5);
//cout << C[i-5]<<" ";
}//cout <<endl;
int S = 0;
for (int i = 0; i < 11; ++i)
{
S += (R[5][controlled[i]]<<i);
//cout << R[5][controlled[i]]<<" "<<controlled[i]<<endl;
}
//cout << S<<endl;
vector<bool> ans;
for (int i = 11; i < 15; ++i)
{
if((int)ans.size()+1<=S) ans.push_back(R[5][controlled[i]]);
}
int j=6;
while((int)ans.size()<S){
for (int i = 0; i < 15; ++i)
{
if((int)ans.size()+1<=S) ans.push_back(R[j][controlled[i]]);
}
j++;
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |