| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1311907 | eri16 | 메시지 (IOI24_message) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "message.h"
using namespace std;
using ll = long long;
void send_message(vector<bool> M, vector<bool> C){
ll n = C.size();
vector <bool> truth(31,true);
vector <bool> lie(31,false);
vecotr <ll> index;
for (int i=0; i<31; i++){
if (C[i]){send_packet(lie);}
else{send_packet(truth);index.push_back(i);}
}
for (int i=0; i<M.size(); i=i+8){
vector <bool> ans = lie;
for (int j=0; j<16 && i+j/2<M.size(); j=j+2){
if (M[i+j/2]){
ans[index[j]]=true;
}
ans[index[j+1]]=true;
}
send_packer(ans);
}
}
vector<bool> receive_message(vector<vector<bool>> R){
vector <ll> idx;
for (int i=0; i<31; i++){
ll sm = 0;
for (int j=0; j<31; j++){
if (R[i][j]){sm++;}
}
if (sm>=16){idx.push_back(i);}
}
vector <bool> ans;
for (int i=31; i<R.size(); i++){
for (int j=0; j<16; j=j+2){
if (R[i][idx[j+1]]){
if (R[i][idx[j]]){
ans.push_back(true);
}
else{ans.push_back(false);}
}
}
}
return ans;
}
