#include "message.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define sz(a) (int)a.size()
#define all(a) begin(a),end(a)
using ll = long long;
using ar2 = array<int,2>;
using ar3 = array<int,3>;
using vi = vector<int>;
using vll = vector<ll>;
using vb = vector<bool>;
const int mxN = (int)1e5+10;
const int INF = (int)1e9+10;
const ll LINF = (ll)1e18+10;
int n, USED;
vb packet;
vi C;
void send(int x){
while(1){
while(sz(packet)<31){
int cur = sz(packet);
if(C[cur]) packet.pb(0);
else if(C[cur]==0){ packet.pb(x); return; }
}
send_packet(packet); packet.clear(); USED++;
}
}
void send_message(vb M, vb c) {
C.clear(); C.resize(31,1); packet.clear(); USED = 0;
int bad = 0, good = 0, i = 0;
while(i<31 and bad<15 and !good){
vb xd(31,c[i]); send_packet(xd);
C[i] = c[i]; good+=!C[i], bad+=C[i], i++; USED++;
}
while(i<31 and bad<15 and good<16){
send(c[i]); C[i] = c[i];
good+=!C[i], bad+=C[i], i++;
}
for(int k = i; k < 31; k++) C[k]=(bad==15?0:1);
n = sz(M); if(n==1024) n=0;
for(int i = 0; i < 10; i++) send(n>>i&1);
for(auto u : M) send(u);
if(sz(packet)){
while(sz(packet)<31) packet.pb(0);
send_packet(packet); packet.clear();
}
}
vb receive_message(vector<vb> R) {
vb ans; ans.clear();
vi C; C.clear(); C.resize(31,1);
int bad = 0, good = 0, i=0,j=0,cur_C;
while(i<sz(R) and bad<15 and !good){
int num = accumulate(all(R[i]),0);
bool bit = num>=16;
if(bit) bad++;
else good++;
C[i] = bit; i++;
}
if(bad==15){
for(int k = 15; k < 31; k++) C[k] = 0;
}
else{
cur_C=i; j = 0;
while(bad<15 and good<16){
if(!C[j]){
C[cur_C++]=R[i][j];
if(R[i][j]) bad++;
else good++;
}
j++; if(j==31) i++,j=0;
}
for(int k = cur_C; k < 31; k++) C[k] = (bad==15?0:1);
}
int bits = 0, n = 0;
while(i<sz(R)){
if(!C[j]){
if(bits<10) n|=R[i][j]*(1<<bits),bits++;
else{
if(n==0) n=1024;
if(sz(ans)==n) return ans;
ans.pb(R[i][j]);
}
}
j++; if(j==31) i++,j=0;
}
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... |