#include "message.h"
#include<bits/stdc++.h>
using namespace std;
void send_message(vector<bool> M, vector<bool> C){
vector<int> b;
for (int i=0; i<31; i++){
if (!C[i]) b.push_back(i);
}
vector<vector<bool>> R(66, vector<bool>(31));
int cur = -1;
for (int i=0; i<16; i++){
for (int j=0; j<66; j++){
if (j < (b[(i+1)%16]-b[i]-1+31)%31) R[j][b[i]] = 0;
else if (j == (b[(i+1)%16]-b[i]-1+31)%31) R[j][b[i]] = 1;
else if (0 & ++cur) ;
else if (cur < M.size()) R[j][b[i]] = M[cur];
else if (cur == M.size()) R[j][b[i]] = 1;
else R[j][b[i]] = 0;
}
}
for (int i=0; i<66; i++) send_packet(R[i]);
}
vector<bool> receive_message(vector<vector<bool>> R){
vector<int> a(31, 1);
for (int i=0; i<31; i++){
for (int j=0; j<66; j++){
if (R[j][i]){
a[i] = j+1;
break;
}
}
a[i] = (i+a[i]) % 31;
}
vector<int> b;
for (int i=0; i<16; i++){
b = {i};
int cur = a[i];
while (cur != i){
b.push_back(cur);
cur = a[cur];
}
if (b.size() == 16) break;
}
vector<bool> M;
for (int i=0; i<16; i++){
for (int j=(b[(i+1)%16]-b[i]+31)%31; j<66; j++) M.push_back(R[j][b[i]]);
}
while (!M.back()) M.pop_back();
M.pop_back();
return M;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |