Submission #1164741

#TimeUsernameProblemLanguageResultExecution timeMemory
1164741yusuf12360Message (IOI24_message)C++20
29.32 / 100
526 ms860 KiB
#include "message.h" #include<bits/stdc++.h> #define ll long long #define vi vector<int> #define vll vector<ll> #define pb push_back #define fi first #define se second #pragma gcc optimize("O3") using namespace std; void send_message(vector<bool> M, vector<bool> C) { for(int i = 0; i < C.size(); i++) { send_packet(vector<bool>(31, C[i])); } int sz = M.size(); vector<bool> a(31); for(int i = 0; i < C.size(); i++) { if(C[i]) continue; a[i] = sz & 1; sz /= 2; } send_packet(a); int idx = 0; while(idx < M.size()) { for(int i = 0; i < 31 && idx < M.size(); i++) { if(C[i]) continue; a[i] = M[idx++]; } send_packet(a); } } vector<bool> receive_message(vector<vector<bool>> R) { vector<bool> ans, C; for(int i = 0; i < 31; i++) { int cnt = 0; for(auto p : R[i]) { if(p) cnt++; else cnt--; } if(cnt > 0) C.pb(1); else C.pb(0); } int sz = 0; for(int i = 30; i >= 0; i--) { if(C[i]) continue; sz = sz * 2 + R[31][i]; } ans.resize(sz); int idx = 0; for(int i = 32; i < R.size(); i++) { for(int j = 0; j < 31 && idx < sz; j++) { if(C[j]) continue; ans[idx++] = R[i][j]; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...