Submission #1243788

#TimeUsernameProblemLanguageResultExecution timeMemory
1243788MarwenElarbiMessage (IOI24_message)C++20
66.72 / 100
422 ms852 KiB
#include <bits/stdc++.h> #include "message.h" using namespace std; void send_message(std::vector<bool> M, std::vector<bool> C) { vector<int> controlled; for (int i = 0; i < 31; ++i) { if(!C[i]) controlled.push_back(i); } for (int i = 0; i < 5; ++i) { vector<bool> A(31,0); for (int j = 0; j < 16; ++j) { A[controlled[j]] = ((1<<i) & controlled.back()); } send_packet(A); } int S = M.size(); vector<bool> A(31,0); for (int i = 0; i < 11; ++i) { A[controlled[i]] = ((1<<i) & S) ; } int k = 0; int j = 0; for (int i = 11; i < 15; ++i) { A[controlled[i]] = M[min(S-1,k++)]; } A[controlled.back()]=C[j++]; send_packet(A); while(k <= S || j<=30){ for (int i = 0; i < 15; ++i) { A[controlled[i]] = M[min(S-1,k++)]; } A[controlled.back()]=C[min(30,j++)]; send_packet(A); } } std::vector<bool> receive_message(std::vector<std::vector<bool>> R) { vector<int> nabba[32]; for (int i = 0; i < 31; ++i) { int cnt=0; for (int j = 0; j < 5; ++j) { //cout <<R[j][i]<<" "; cnt+=(R[j][i]<<j); }//cout <<endl; nabba[cnt].push_back(i); } int control=0; //cout <<"hey"<<endl; for (int i = 0; i < 31; ++i){ //cout << (int)nabba[i].size() <<" "; if((int)nabba[i].size()>=16) control = i; }//cout <<endl; //cout <<control<<endl; vector<bool> C(31,0); vector<int> controlled; for (int i = 5; i < 36; ++i) { C[i-5]=R[i][control]; if(!C[i-5]) controlled.push_back(i-5); //cout << C[i-5]<<" "; }//cout <<endl; int S = 0; for (int i = 0; i < 11; ++i) { S += (R[5][controlled[i]]<<i); //cout << R[5][controlled[i]]<<" "<<controlled[i]<<endl; } //cout << S<<endl; vector<bool> ans; for (int i = 11; i < 15; ++i) { if((int)ans.size()+1<=S) ans.push_back(R[5][controlled[i]]); } int j=6; while((int)ans.size()<S){ for (int i = 0; i < 15; ++i) { if((int)ans.size()+1<=S) ans.push_back(R[j][controlled[i]]); } j++; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...