Submission #1133638

#TimeUsernameProblemLanguageResultExecution timeMemory
1133638LuvidiMessage (IOI24_message)C++20
77.38 / 100
420 ms852 KiB
#include "message.h" #include <bits/stdc++.h> using namespace std; void send_message(std::vector<bool> m, std::vector<bool> c) { int idx=0; while(c[idx])idx++; vector<vector<bool>> a(67,vector<bool>(31)); for(int i=0;i<31;i++){ a[i][idx]=c[i]; } int n=m.size(); for(int i=31;i<42;i++){ a[i][idx]=n&(1<<i-31); } int curr=0; for(int i=0;i<67;i++){ for(int j=0;j<31;j++){ if(c[j])continue; if(j==idx&&i<42)continue; if(curr<n){ a[i][j]=m[curr++]; } } } for(auto v:a)send_packet(v); for(int i=0;i<4;i++){ vector<bool> t; for(int j=0;j<31;j++){ t.push_back(idx>>i&1); } send_packet(t); } } std::vector<bool> receive_message(std::vector<std::vector<bool>> b) { int idx=0; for(int i=0;i<4;i++){ int cnt=0; for(int j=0;j<31;j++){ cnt+=b[67+i][j]; } idx+=(cnt>15)*(1<<i); } vector<bool> c(31); for(int i=0;i<31;i++){ c[i]=b[i][idx]; } int n=0; for(int i=31;i<42;i++){ n+=b[i][idx]*(1<<i-31); } vector<bool> ans(n); int curr=0; for(int i=0;i<b.size();i++){ for(int j=0;j<31;j++){ if(c[j])continue; if(j==idx&&i<42)continue; if(curr<n)ans[curr++]=b[i][j]; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...