Submission #1297854

#TimeUsernameProblemLanguageResultExecution timeMemory
1297854gesp3011v2Message (IOI24_message)C++20
29.32 / 100
567 ms836 KiB
#include "message.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define F(i,l,r) for(int i=l,i_end=r;i<i_end;++i) #define FR(i,l,r) for(int i=l,i_end=r;i>=i_end;--i) void send_message(vector<bool> message, vector<bool> positions) { F(i,0,31){ vector<bool> bits(31); for (int j=0; j<31; j++) bits[j] = positions[i]; send_packet(bits); } vector<int> needed,mine; F(i,0,31)if(positions[i]==0)mine.push_back(i); int sz=(message.size()+4); int rem=16-(sz%16); rem%=16; F(i,0,4){ needed.push_back(rem%2); rem>>=1; } F(i,0,message.size())needed.push_back(message[i]); rem=16-(sz%16); rem%=16; F(i,0,rem)needed.push_back(0); F(round,0,needed.size()/16){ vector<bool> bits(31); F(j,0,16)bits[mine[j]]=needed[round*16+j]; send_packet(bits); } } vector<bool> receive_message(vector<vector<bool>> received_bits) { vector<bool> message; vector<int> mine; for(int i=0;i<31;i++){ sort(received_bits[i].begin(), received_bits[i].end()); if(received_bits[i][15]==0) mine.push_back(i); } vector<bool> received; F(i,31,received_bits.size()){ for(auto j:mine)received.push_back(received_bits[i][j]); } int rem=0; FR(i,3,0){ rem<<=1; rem+=received[i]; } for(int i=4;i<received.size()-rem;i++)message.push_back(received[i]); return message; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...