#include "message.h"
#include<bits/stdc++.h>
using namespace std;
long long tqh[35]=
{1247409604,1041284415,368450250,759565667,688983579,163713745,878269828,1800699521,23182890,601149433,703873808,1548830370,894144778,1358735275,44310481,1094541754,1676837940,1848239302,1511851508,606643000,1302241754,1676046649,1239123916,991006200,1119130579,1302034927,275419670,1588229067,1559215688,1237265176,742427275,1896172886,1516355067,1733916436,2129019759};
void send_message(vector<bool> M, vector<bool> C) {
srand(160);
vector<bool> razkrit(31);
for (int q=0;q<31;q++) razkrit[q]=!C[q];
int klk=16;
int prv;
int vtr;
for (int w=0;w<35;w++)
{
vector<bool> msg(31);
int tt=rand()%2;
vtr=w;
for (int q=0;q<31;q++)
{
if (C[q])
{
if (w==prv) msg[q]=(tqh[w]>>q)%2;
else if (w==vtr) msg[q]=1-(tqh[w]>>q)%2;
else msg[q]=rand()%2;
}
else
{
int klk=(tqh[w]>>q)%2;
msg[q]=klk;
}
}
vector<bool> rsp=send_packet(msg);
for (int q=0;q<31;q++)
{
if (rsp[q]!=((tqh[w]>>q)%2))
{
if (razkrit[q]) continue;
razkrit[q]=1;
klk++;
}
}
if (klk==31) {
//cerr<<w<<" s\n";
break;
}
}
int len=M.size();
int br=0;
vector<bool> dylz(31);
for (int q=0;q<31;q++)
{
if (C[q]) dylz[q]=0;
else
{
dylz[q]=len%2;
len/=2;
}
}
send_packet(dylz);
len=M.size();
for (int cur=0;cur<len;)
{
vector<bool> syob(31);
for (int q=0;q<31;q++)
{
if (C[q]) syob[q]=0;
else
{
if (cur==len) syob[q]=0;
else
{
syob[q]=M[cur];
cur++;
}
}
}
send_packet(syob);
}
}
vector<bool> receive_message(vector<vector<bool>> R) {
vector<bool> otg;
vector<bool> razkrit(31);
int klk=0;
int sl;
for (int w=0;w<35;w++)
{
for (int q=0;q<31;q++)
{
if (R[w][q]!=((tqh[w]>>q)%2))
{
if (razkrit[q]) continue;
razkrit[q]=1;
klk++;
}
}
if (klk==15)
{
sl=w+1;
//cerr<<w<<" r\n";
break;
}
}
int dlz=0;
int br=0;
for (int q=0;q<31;q++)
{
if (razkrit[q]) continue;
dlz+=R[sl][q]*(1<<br);
br++;
}
//cout<<dlz<<" e dylg\n";
int cur=0;
for (int w=sl+1;w<R.size();w++)
{
for (int q=0;q<31;q++)
{
if (razkrit[q]) continue;
if (cur==dlz) continue;
otg.push_back(R[w][q]);
cur++;
}
}
return otg;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |