Submission #1194494

#TimeUsernameProblemLanguageResultExecution timeMemory
1194494aykhn메시지 (IOI24_message)C++20
58.63 / 100
417 ms868 KiB
#include "message.h" #include <bits/stdc++.h> using namespace std; int o[31] = {28, 26, 6, 29, 17, 18, 13, 24, 4, 12, 5, 25, 21, 19, 16, 20, 8, 9, 14, 15, 2, 27, 11, 22, 23, 1, 7, 10, 30, 0, 3}; void send_message(vector<bool> M, vector<bool> C) { int n = M.size(); vector<vector<bool>> res; vector<int> unlock; for (int i = 0; i < 31;) { vector<bool> v; if (unlock.empty()) { if (C[o[i]] == 0) v = vector<bool>(31, 1); else v = vector<bool>(31, 0); send_packet(v); if (v.back()) unlock.push_back(o[i]); i++; continue; } v = vector<bool>(31, 0); int j = 0; while (i < 31 && j < unlock.size()) { if (C[o[i]] == 0) v[unlock[j]] = 1, unlock.push_back(o[i]); else v[unlock[j]] = 0; i++, j++; } send_packet(v); } { vector<bool> v(31, 0); for (int i = 0; i <= 10; i++) v[unlock[i]] = (n >> i & 1); send_packet(v); } for (int i = 0; i < (n + 15) / 16; i++) { vector<bool> v(31, 0); for (int j = 0; j < 16; j++) { if (i * 16 + j >= n) break; v[unlock[j]] = M[i * 16 + j]; } send_packet(v); } } vector<bool> receive_message(vector<vector<bool>> R) { vector<int> unlock; int cur = -1; auto nxt = [&]() { return R[++cur]; }; auto get = [&](vector<bool> A) { int cnt = 0; for (auto i : A) cnt += (int)i; return cnt >= 16; }; for (int i = 0; i < 31;) { vector<bool> v = nxt(); if (unlock.empty()) { if (get(v)) unlock.push_back(o[i]); i++; continue; } int j = 0; while (i < 31 && j < unlock.size()) { if (v[unlock[j]] == 1) unlock.push_back(o[i]); i++, j++; } } vector<bool> sz = nxt(); int n = 0; for (int i = 0; i <= 10; i++) { if (sz[unlock[i]]) n |= (1 << i); } vector<bool> res(n, 0); for (int i = 0; i < (n + 15) / 16; i++) { vector<bool> v = nxt(); for (int j = 0; j < 16; j++) { if (i * 16 + j >= n) break; res[i * 16 + j] = v[unlock[j]]; } } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...