Submission #1193888

#TimeUsernameProblemLanguageResultExecution timeMemory
1193888ezzzayMessage (IOI24_message)C++17
29.32 / 100
552 ms860 KiB
#include "message.h" #include<bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back void send_message(std::vector<bool> M, std::vector<bool> C) { for(auto a:C){ vector<bool>v; for(int i=0;i<31;i++)v.pb(a); send_packet(v); } vector<int>idx; for(int i=0;i<31;i++){ if(C[i]==0)idx.pb(i); } int L=M.size(); vector<bool>tmp(31); for(int i=0;i<15;i++){ if(L & (1<<i)){ tmp[idx[i]]=1; } } send_packet(tmp); for(int i=0;i<L/16;i++){ vector<bool>v(31); for(int j=0;j<16;j++){ v[idx[j]]=M[i*16+j]; } send_packet(v); } if(L%16){ vector<bool>v(31); for(int j=0;j<L%16;j++){ v[idx[j]]=M[L-L%16+j]; } send_packet(v); } } std::vector<bool> receive_message(std::vector<std::vector<bool>> R) { vector<bool>C; for(int i=0;i<31;i++){ vector<bool>v=R[i]; int s=0; for(auto a:v)s+=a; if(s>=16)C.pb(1); else C.pb(0); } vector<int>idx; for(int i=0;i<31;i++)if(C[i]==0)idx.pb(i); int L=0; for(int i=0;i<15;i++){ if(R[31][idx[i]])L+=(1<<i); } vector<bool>M(L); for(int i=0;i<L/16;i++){ vector<bool>v(31); for(int j=0;j<16;j++){ M[i*16+j]=R[i+32][idx[j]]; } } if(L%16){ vector<bool>v(31); for(int j=0;j<L%16;j++){ M[L-L%16+j]=R.back()[idx[j]]; } } return M; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...