제출 #1311908

#제출 시각아이디문제언어결과실행 시간메모리
1311908eri16메시지 (IOI24_message)C++20
10 / 100
221 ms804 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);    
    
    vector <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_packet(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;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...