#include <bits/stdc++.h>
//#include "message.h"
using namespace std;
#define ll long long
#define fi first
#define se second
#define pii pair<int, int>
vector <vector<bool>> v = {{1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0}, {1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0}, {1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0}, {1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0}, {1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1}, {0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0}, {1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1}, {1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0}, {0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1}, {1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1}, {1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0}, {1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0}, {1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1}, {1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0}, {0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0}};vector <bool> cc;
vector <vector<bool>> bla;
//std::vector<bool> send_packet(std::vector<bool> A) {
// srand(time(0));
// vector <bool> ret = A;
//
// for (int i = 0; i < 31; i++) {
// if (!cc[i]) continue;
//
// ret[i] = rand() % 2;
// }
//
// bla.push_back(ret);
// return ret;
//}
std::vector<bool> send_packet(std::vector<bool> A);
void send_message(std::vector<bool> M, std::vector<bool> C) {
cc = C;
vector <bool> zero, one;
for (auto e : v) send_packet(e);
int n = M.size();
vector <bool> sz(31, 0);
for (int i = 30; i >= 0; i--) {
if (C[i]) continue;
if (n % 2) sz[i] = 1;
n /= 2;
}
send_packet(sz); /// this sends how long is M
int pos = 0;
vector <bool> msg(31, 0);
for (auto e : M) {
while (pos < 31 && C[pos]) pos++;
if (pos == 31) {
pos = 0;
send_packet(msg);
for (int i = 0; i < 31; i++) msg[i] = 0;
}
while (pos < 31 && C[pos]) pos++;
if (e) msg[pos] = 1;
pos++;
}
if (pos != 0) send_packet(msg);
}
std::vector<bool> receive_message(std::vector<std::vector<bool>> R) {
vector <int> C(31, 0);
for (int i = 0; i < v.size(); i++) {
for (int j = 0; j < 31; j++) {
if (v[i][j] != R[i][j]) C[j] = 1;
}
}
// cout << "C -> "; for (int i = 0; i < 31; i++) cout << C[i] << " "; cout << "\n";
int sz = 0;
int cnt = 0;
for (int i = 30; i >= 0; i--) {
if (C[i]) continue;
sz += R[v.size()][i] * (1 << cnt);
cnt++;
}
vector <bool> ret;
cnt = 0;
for (int i = v.size() + 1; i < R.size(); i++) {
for (int j = 0; j < 31; j++) {
if (cnt == sz) continue;
if (C[j]) continue;
int x = R[i][j];
ret.push_back(x);
cnt++;
}
}
return ret;
}
//int main() {
//// srand(time(0));
//// for (int i = 0; i < 1234523; i++) rand();
////
//// v.clear();
//// for (int i = 0; i < 20; i++) {
//// vector <bool> rah;
//// for (int j = 0; j < 31; j++) rah.push_back(rand() % 2);
//// v.push_back(rah);
//// }
////
//// cout << "vector <vector<bool>> v = {";
//// for (auto e : v) {
//// cout << "{";
//// for (int i = 0; i < 31; i++) {
//// cout << e[i];
//// if (i != 30) cout << ", ";
//// }
//// if (e != v.back()) cout << "}, ";
//// }
//// cout << "}};";
////
//// return 0;
//
// send_message({0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0}, {0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1});
//// cout << bla.size() << " bla size\n\n";
//
// vector <bool> sol = receive_message(bla);
// cout << "sol - "; for (auto e : sol) cout << e << " "; cout << "\n";
//}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |