# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1102364 | 2024-10-18T03:11:13 Z | ezzzay | 메시지 (IOI24_message) | C++17 | 0 ms | 0 KB |
#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) { vector<int>vc; for(int i=0;i<31;i++){ vector<bool>v; if(C[i]==0)vc.pb(i); for(int j=0;j<31;j++){ v.pb(C[i]); } send_packet(v); } int n= M.size(); n%=16; vector<bool>v; for(int i=0;i<31;i++){ if((1<<i)&n){ v.pb(1); } else{ v.pb(0); } } send_packet(v); for(int i=0;i<int(M.size());i+=16){ vector<bool>v(31); for(int j=i;j<min(int(M.size()),i+16);j++){ v[vc[j-i]]=M[j]; } send_packet(v); } } std::vector<bool> receive_message() { vector<int>vc; for(int i=0;i<31;i++){ vector<bool>v=R[i]; sort(v.begin(),v.end()); if(v[15]==0){ vc.pb(i); } } int n=0; vector<bool>v=R[31]; for(int i=0;i<31;i++){ if(v[i]){ n+= (1<<i); } } vector<bool>M; for(int i=32;i<R.size();i++){ if(i==int(R.size())-1){ for(int j=0;j<n;j++){ M.pb(R[i][vc[j]]); } continue; } for(int j=0;j<16;j++){ M.pb(R[i][vc[j]]); } } return M; }