Submission #1166263

#TimeUsernameProblemLanguageResultExecution timeMemory
1166263spycoderytMessage (IOI24_message)C++20
77.38 / 100
440 ms848 KiB
#include "message.h" #include <bits/stdc++.h> using namespace std; void send_message(std::vector<bool> message, std::vector<bool> mask) { int x; vector<bool> allzero(31, 0),allone(31,1); for(int i = 0;i<31;i++) if(mask[i]==0){ x=i; break; } for(int i = 0;i<5;i++) { if((1<<i)&x) send_packet(allone); else send_packet(allzero); } reverse(message.begin(),message.end()); message.push_back(1); while(message.size() < 1025) message.push_back(0); reverse(message.begin(),message.end()); int idx = 0, info = 0; vector<bool> cur; // for(auto e : message) cout << e << " "; while(idx < message.size()) { int cand = cur.size(); if(cand == x && info < 31) { cur.push_back(mask[info++]); } else if (mask[cand]) { cur.push_back(0); } else { cur.push_back(message[idx++]); } if(cur.size() == 31) { send_packet(cur); cur.clear(); } } if(cur.size()){ while(cur.size() < 31) cur.push_back(0); send_packet(cur); } } bool vote(vector<bool> v) { int a=0,b=0; for(int i = 0;i<v.size();i++) { v[i] ? a++ : b++; } if(a > b) return 1; else return 0; } std::vector<bool> receive_message(std::vector<std::vector<bool>> res) { int x = 0; for(int i = 0;i<5;i++) if(vote(res[i]))x |= (1<<i); vector<bool>mask(31,0); vector<bool>ans; for(int i = 5;i<5+31;i++) { mask[i-5]=res[i][x]; } for(int i = 5;i<res.size();i++) { for(int j = 0;j<31;j++) if(!mask[j] && !(i < 5 + 31 && j == x)){ ans.push_back(res[i][j]); } } while(ans.size() > 1025)ans.pop_back(); reverse(ans.begin(),ans.end()); while(ans.back() == 0)ans.pop_back(); ans.pop_back(); reverse(ans.begin(),ans.end()); return ans; } /* 1 5 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...