Submission #1231439

#TimeUsernameProblemLanguageResultExecution timeMemory
1231439banganMessage (IOI24_message)C++20
29.32 / 100
544 ms860 KiB
#include "message.h" #include <bits/stdc++.h> using namespace std; #define pb push_back const int N = 31; void send_message(std::vector<bool> M, std::vector<bool> C) { assert(C.size()==N); for (bool x : C) send_packet(vector<bool>(N, x)); vector<int> ok; for (int i=0; i<N; i++) if (!C[i]) ok.pb(i); assert(ok.size()==16); auto cur = ok.begin(); vector<bool> pac(31, false); for (bool x : M) { if (cur==ok.end()) { send_packet(pac); pac = vector<bool>(31, false); cur = ok.begin(); } pac[*cur] = x; cur++; } if (cur == ok.end()) { send_packet(pac); pac = vector<bool>(31, false); cur = ok.begin(); } pac[*cur] = true; send_packet(pac); } std::vector<bool> receive_message(std::vector<std::vector<bool>> R) { vector<bool> C(N); vector<bool> M; for (int i=0; i<N; i++) { auto vec = R[i]; int cnt[2] {}; for (bool x : vec) cnt[x]++; if (cnt[0]<cnt[1]) C[i]=1; else C[i]=0; } for (int i=N; i+1 < R.size(); i++) { auto vec = R[i]; for (int j=0; j<N; j++) if (!C[j]) M.pb(vec[j]); } auto vec = R.back(); int lst=0; for (int i=0; i<N; i++) if (!C[i] && vec[i]) lst=i; for (int i=0; i<lst; i++) if (!C[i]) M.pb(vec[i]); return M; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...