#include "message.h"
#include<bits/stdc++.h>
#define ll long long
#define vi vector<int>
#define vll vector<ll>
#define pb push_back
#define fi first
#define se second
#pragma gcc optimize("O3")
using namespace std;
void send_message(vector<bool> M, vector<bool> C) {
for(int i = 0; i < C.size(); i++) {
send_packet(vector<bool>(31, C[i]));
}
int sz = M.size();
vector<bool> a(31);
for(int i = 0; i < C.size(); i++) {
if(C[i]) continue;
a[i] = sz & 1;
sz /= 2;
}
send_packet(a);
int idx = 0;
while(idx < M.size()) {
for(int i = 0; i < 31 && idx < M.size(); i++) {
if(C[i]) continue;
a[i] = M[idx++];
}
send_packet(a);
}
}
vector<bool> receive_message(vector<vector<bool>> R) {
vector<bool> ans, C;
for(int i = 0; i < 31; i++) {
int cnt = 0;
for(auto p : R[i]) {
if(p) cnt++;
else cnt--;
}
if(cnt > 0) C.pb(1);
else C.pb(0);
}
int sz = 0;
for(int i = 30; i >= 0; i--) {
if(C[i]) continue;
sz = sz * 2 + R[31][i];
}
ans.resize(sz); int idx = 0;
for(int i = 32; i < R.size(); i++) {
for(int j = 0; j < 31 && idx < sz; j++) {
if(C[j]) continue;
ans[idx++] = R[i][j];
}
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |