#include "message.h"
#include<bits/stdc++.h>
using namespace std;
void send_message(vector<bool> M, vector<bool> C) {
vector<vector<bool>> msg(66);
for (int q=0;q<66;q++) msg[q].resize(31);
int sl[31];
int lst=0;
for (int q=0;q<31;q++)
{
if (!C[q])
{
lst=q+31;
break;
}
}
//for (int q=0;q<31;q++) cout<<q<<" "<<C[q]<<"\n";
for (int q=30;q>=0;q--)
{
if (!C[q])
{
sl[q]=lst-q;
lst=q;
//cout<<q<<" "<<sl[q]<<"\n";
}
}
for (int q=0;q<31;q++)
{
if (C[q]) continue;
for (int w=0;w<(sl[q]-2);w++) msg[w][q]=0;
msg[ sl[q]-1 ][q]=1;
}
reverse(M.begin(),M.end());
M.push_back(1);
while (M.size()<1025) M.push_back(0);
reverse(M.begin(),M.end());
int cur=0;
for (int q=0;q<66;q++)
{
for (int w=0;w<31;w++)
{
if (C[w]) continue;
if (q<sl[w]) continue;
msg[q][w]=M[cur];
cur++;
}
send_packet(msg[q]);
}
}
vector<bool> receive_message(vector<vector<bool>> R) {
vector<bool> otg;
int sl[31];
for (int q=0;q<31;q++) sl[q]=q;
for (int q=0;q<31;q++)
{
for (int w=0;w<66;w++)
{
if (R[w][q]==1)
{
sl[q]=(q+w+1)%31;
break;
}
}
}
bool b[31];
vector<int> cic;
for (int q=0;q<31;q++)
{
for (int w=0;w<31;w++) b[w]=0;
cic.clear();
int cur=q;
while (true)
{
b[cur]=1;
cic.push_back(cur);
if (b[ sl[cur] ])
{
if (sl[cur]==q)
{
break;
}
else
{
cic.clear();
break;
}
}
cur=sl[cur];
}
if (cic.size()==16)
{
break;
}
}
bool rzk[31];
for (int q=0;q<31;q++) rzk[q]=0;
for (int q=0;q<cic.size();q++) rzk[ cic[q] ]=1;
for (int q=0;q<31;q++)
{
sl[q]=(sl[q]+31-q)%31;
}
bool dl=false;
for (int q=0;q<66;q++)
{
for (int w=0;w<31;w++)
{
if (!rzk[w]) continue;
if (q<sl[w]) continue;
if (!dl)
{
if (R[q][w]==1) dl=true;
}
else
{
otg.push_back(R[q][w]);
}
}
}
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... |