#include "message.h"
#include <bits/stdc++.h>
using namespace std;
void send_message(vector<bool> M,vector<bool> C) {
vector<vector<bool>>res(66,vector<bool>(31));
vector<int>koj;
for(int i=0;i<31;i++)if(!C[i])koj.push_back(i);
M.push_back(1);
while(M.size()<1025)
{
M.push_back(0);
}
int l=0;
for(int i=0;i<16;i++)
{
int x,a=koj[i];
if(i!=15)x=koj[i+1]-koj[i]-1;
else x=koj[0]+31-koj[i]-1;
res[x][a]=1;
for(int j=x+1;j<66;j++)
{
res[j][a]=M[l];l++;
}
}
for(int i=0;i<66;i++)
{
send_packet(res[i]);
}
}
vector<bool> receive_message(vector<vector<bool>> v) {
vector<int>koj,dli(31);
for(int i=0;i<31;i++)
{
for(int j=0;j<66;j++)
{
if(v[j][i])
{
dli[i]=j+1;break;
}
}
}
for(int i=0;i<31;i++)
{
int sum=1,a=(i+dli[i])%31;
while(a!=i)
{
if(dli[a]==0)
{
sum=0;break;
}
if(sum>16)break;
sum++;
a=(a+dli[a])%31;
}
if(sum==16)
{
koj.push_back(i);
}
}
vector<bool>res;
for(int i=0;i<16;i++)
{
int a=koj[i];
for(int j=dli[a];j<66;j++)
{
res.push_back(v[j][a]);
}
}
while(res.back()==0)
{
res.pop_back();
}
res.pop_back();
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... |