#include<bits/stdc++.h>
#include "message.h"
using namespace std;
void send_message(vector<bool> M, vector<bool> C) {
vector<bool> hea(31 , 1);
vector<bool> na(31 , 0);
vector<bool> one , two;
vector<int> kongula;
int lol = 15;
for( int z = 15; z <= 30; z++ ) {
if( C[z] == 0 ) lol = z;
}
lol -= 15;
for( int z = 0; z < 4; z++ ) {
if( (lol & (1 << z)) > 0 ) {
two = send_packet(hea);
}
else two = send_packet(na);
}
lol += 15;
vector<vector<bool>> arr;
kongula.clear();
for( int z = 0; z <= 30; z++ ) {
if( z != lol ) {
one = hea;
if( C[z] == 1 ) {
one[lol] = 1;
}
else {
one[lol] = 0;
// cerr << z << "lol" << "\n";
kongula.push_back(z);
}
arr.push_back(one);
}
}
/* for( int z = 0; z < (int)kongula.size(); z++ ) {
cerr << kongula[z] << " ";
}
cerr << lol << "\n"; */
kongula.push_back(lol);
int siz = (int)M.size();
siz--;
// cerr << siz << "\n";
int here = 0;
for( int z = 0; z < 30; z++ ) {
if( z == 0 ) {
for( int y = 0; y <= 9 ; y++ ) {
if( (siz & (1 << y)) == 0 ) {
arr[z][kongula[y]] = 0;
}
else arr[z][kongula[y]] = 1;
}
for( int y = 10; y < 15; y++ ) {
if( here <= siz ) {
if( M[here] == 1 ) arr[z][kongula[y]] = 1;
else arr[z][kongula[y]] = 0;
here++;
}
}
}
else{
for( int y = 0; y < 15; y++ ) {
if( here <= siz ) {
if( M[here] == 1 ) arr[z][kongula[y]] = 1;
else arr[z][kongula[y]] = 0;
here++;
}
}
}
}
kongula.push_back(lol);
sort( kongula.begin() , kongula.end() );
while( here <= siz ) {
one = hea;
for( int y = 0; y < 16; y++ ) {
if( here <= siz ) {
if( M[here] == 1 ) one[kongula[y]] = 1;
else one[kongula[y]] = 0;
here++;
}
}
arr.push_back(one);
}
for( int z = 0; z < (int)arr.size(); z++ ) {
two = send_packet(arr[z]);
}
}
vector<bool> receive_message(vector<vector<bool>> R) {
int cnt;
int lol = 15;
for( int z = 0; z < 4; z++ ) {
cnt = 0;
for( int y = 0; y < 31; y++ ) {
if( R[z][y] == 1 ) cnt++;
}
if( cnt >= 16 ) {
lol += (1 << z);
}
}
vector<int> kongula;
kongula.clear();
int here = 0;
for( int z = 4; z < 34; z++ ) {
if( R[z][lol] == 0 ) {
kongula.push_back(here);
}
here++;
if( here == lol ) here++;
}
int siz = 0;
here = 0;
vector<bool> ans;
ans.clear();
for( int z = 4; z < 34; z++ ) {
if( z == 4 ) {
for( int y = 0; y <= 9; y++ ) {
if( R[z][kongula[y]] == 1 ) siz += (1 << y);
}
for( int y = 10; y < 15; y++ ) {
if( here <= siz ) {
if( R[z][kongula[y]] == 1 ) ans.push_back(1);
else ans.push_back(0);
here++;
}
}
}
else{
for( int y = 0; y < 15; y++ ) {
if( here <= siz ) {
if( R[z][kongula[y]] == 1 ) ans.push_back(1);
else ans.push_back(0);
here++;
}
}
}
}
kongula.push_back(lol);
sort( kongula.begin() , kongula.end() );
for( int z = 34; z < (int)R.size(); z++ ) {
for( int y = 0; y < 16; y++ ) {
if( here <= siz ) {
if( R[z][kongula[y]] == 1 ) ans.push_back(1);
else ans.push_back(0);
here++;
}
}
}
// cerr << siz << "\n";
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... |