#include<bits/stdc++.h>
#include "message.h"
using namespace std;
namespace Alice{
vector<int> good;
void send(int x){
vector<bool> mes;
for(int i=0;i<31;i++){
mes.push_back(x%2); x/=2;
}
send_packet(mes);
}
};
void send_message(vector<bool> M, vector<bool> C){
using namespace Alice;
good.clear();
int maskgood=0;
for(int i=0;i<31;i++){
if(!C[i]){
good.push_back(i);
maskgood^=(1<<i);
}
}
for(int i=0;i<5;i++){
if(good[0]&(1<<i))send(maskgood);
else send(0);
}
vector<bool> mess(1026-int(M.size())-1,0);
mess.push_back(1);
for(auto b:M)mess.push_back(b);
int pt=0,to=0;
for(int i=0;i<30;i++){
vector<bool> curr(31,0);
if(pt==good[0])pt++;
curr[good[0]]=!C[pt];
for(int f=1;f<16;f++){
curr[good[f]]=mess[to];
to++;
}
send_packet(curr);
pt++;
}
for(int i=0;i<36;i++){
vector<bool> curr(31,0);
for(int f=0;f<16;f++){
curr[good[f]]=mess[to];
to++;
}
send_packet(curr);
}
}
namespace Bob{
vector<int> good;
};
vector<bool> receive_message(vector< vector<bool> > R){
using namespace Bob;
good.clear();
int pos=0;
for(int i=0;i<5;i++){
int bal=0;
for(int f=0;f<31;f++){
if(R[i][f])bal++;
else bal--;
}
if(bal>0)pos^=(1<<i);
}
good.push_back(pos);
int pt=0;
for(int i=0;i<30;i++){
if(pt==pos)pt++;
if(R[5+i][pos])good.push_back(pt);
pt++;
}
vector<bool> mess;
for(int i=0;i<30;i++){
for(int f=1;f<16;f++){
mess.push_back(R[5+i][good[f]]);
}
}
for(int i=0;i<36;i++){
for(int f=0;f<16;f++){
mess.push_back(R[35+i][good[f]]);
}
}
vector<bool> ans;
bool ok=false;
for(int i=0;i<mess.size();i++){
if(ok)ans.push_back(mess[i]);
if(mess[i])ok=true;
}
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... |