Submission #1242642

#TimeUsernameProblemLanguageResultExecution timeMemory
1242642fskaricaMessage (IOI24_message)C++20
0 / 100
80 ms840 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define fi first #define se second #define pii pair<int, int> vector <vector<bool>> v = {{1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1}, {1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1}, {1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1}, {0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1}, {1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0}, {1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0}, {0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1}, {0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0}}; std::vector<bool> send_packet(std::vector<bool> A); void send_message(std::vector<bool> M, std::vector<bool> 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; } } 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; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...