#include <bits/stdc++.h>
#include "message.h"
using namespace std;
using ll = long long;
/*vector<vector<bool>> R;
void send_packet(vector<bool> a) {
R.push_back(a);
}*/
void send_message(vector<bool> M, vector<bool> C) {
vector<bool> a, b;
for(int i = 0; i < 31; i++) {
a.push_back(1);
b.push_back(0);
}
int idx;
for(int i = 0; i < 31; i++) {
if(C[i]) continue;
idx = i;
break;
}
for(int i = 0; i < 5; i++) {
if(idx & (1 << i)) {
send_packet(a);
}
else {
send_packet(b);
}
}
int idx1 = 0;
reverse(M.begin(), M.end());
M.push_back(1);
while(M.size() != 1026) M.push_back(0);
reverse(M.begin(), M.end());
int cnt = 0;
int s = M.size();
while(idx1 < s) {
vector<bool> now;
for(int i = 0; i < 31; i++) {
if(C[i]) {
now.push_back(0);
continue;
}
if(i == idx) {
if(cnt >= 30) {
now.push_back(M[idx1++]);
}
else {
now.push_back(C[cnt+(cnt>=idx)]);
}
continue;
}
now.push_back(M[idx1++]);
}
send_packet(now);
++cnt;
}
}
vector<bool> receive_message(vector<vector<bool>> R) {
int s = 0;
vector<bool> ans;
for(int i = 0; i < 31; i++) ans.push_back(1);
int idx = 0;
for(int i = 0; i < 5; i++) {
int cnt = 0;
for(int j = 0; j < 31; j++) {
cnt += R[i][j];
}
if(cnt >= 16) idx |= (1 << i);
}
int idx1 = 0;
for(int i = 5; i < 35; i++) {
if(idx1 == idx) idx1++;
ans[idx1] = 1-R[i][idx];
++idx1;
}
vector<bool> res;
for(int i = 5; i < 35; i++) {
for(int j = 0; j < 31; j++) {
if(ans[j] && j != idx) res.push_back(R[i][j]);
}
}
for(int i = 35; i < 71; i++) {
for(int j = 0; j < 31; j++) {
if(ans[j]) res.push_back(R[i][j]);
}
}
vector<bool> real_ans;
int i;
for(i = 0; i < res.size(); i++) {
if(res[i] == 1) break;
}
++i;
for(i; i < res.size(); i++) real_ans.push_back(res[i]);
return real_ans;
}
/*int main()
{
send_message({0, 1, 1, 0}, {1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0});
vector<bool> ans = receive_message(R);
for(auto it : ans) {
cout << it << ' ';
}
return 0;
}*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |