제출 #1212060

#제출 시각아이디문제언어결과실행 시간메모리
1212060vaneaMessage (IOI24_message)C++20
77.38 / 100
432 ms848 KiB
#include <bits/stdc++.h> #include "message.h" using namespace std; using ll = long long; /*vector<vector<bool>> R; void send_packet(vector<bool> a) { R.push_back(a); }*/ void send_message(vector<bool> M, vector<bool> C) { vector<bool> a, b; for(int i = 0; i < 31; i++) { a.push_back(1); b.push_back(0); } int idx; for(int i = 0; i < 31; i++) { if(C[i]) continue; idx = i; break; } for(int i = 0; i < 5; i++) { if(idx & (1 << i)) { send_packet(a); } else { send_packet(b); } } int idx1 = 0; reverse(M.begin(), M.end()); M.push_back(1); while(M.size() != 1026) M.push_back(0); reverse(M.begin(), M.end()); int cnt = 0; int s = M.size(); while(idx1 < s) { vector<bool> now; for(int i = 0; i < 31; i++) { if(C[i]) { now.push_back(0); continue; } if(i == idx) { if(cnt >= 30) { now.push_back(M[idx1++]); } else { now.push_back(C[cnt+(cnt>=idx)]); } continue; } now.push_back(M[idx1++]); } send_packet(now); ++cnt; } } vector<bool> receive_message(vector<vector<bool>> R) { int s = 0; vector<bool> ans; for(int i = 0; i < 31; i++) ans.push_back(1); int idx = 0; for(int i = 0; i < 5; i++) { int cnt = 0; for(int j = 0; j < 31; j++) { cnt += R[i][j]; } if(cnt >= 16) idx |= (1 << i); } int idx1 = 0; for(int i = 5; i < 35; i++) { if(idx1 == idx) idx1++; ans[idx1] = 1-R[i][idx]; ++idx1; } vector<bool> res; for(int i = 5; i < 35; i++) { for(int j = 0; j < 31; j++) { if(ans[j] && j != idx) res.push_back(R[i][j]); } } for(int i = 35; i < 71; i++) { for(int j = 0; j < 31; j++) { if(ans[j]) res.push_back(R[i][j]); } } vector<bool> real_ans; int i; for(i = 0; i < res.size(); i++) { if(res[i] == 1) break; } ++i; for(i; i < res.size(); i++) real_ans.push_back(res[i]); return real_ans; } /*int main() { send_message({0, 1, 1, 0}, {1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0}); vector<bool> ans = receive_message(R); for(auto it : ans) { cout << it << ' '; } return 0; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...