Submission #1210711

#TimeUsernameProblemLanguageResultExecution timeMemory
1210711Aviansh메시지 (IOI24_message)C++20
29.32 / 100
540 ms860 KiB
#include "message.h"

#include <bits/stdc++.h>

using namespace std;

void send_message(vector<bool> M, vector<bool> C) {
    for(bool b : C){
        vector<bool> A(31, b);
        send_packet(A);
    }
    //C has been sent.
    vector<int>inds;
    for(int i = 0;i<31;i++){
        if(C[i]==0){
            inds.push_back(i);
        }
    }
    assert(inds.size()==16);
    int i = 0;
    vector<bool>msg(31,0);
    for(bool b : M){
        if(i==16){
            send_packet(msg);
            i=0;
            msg=vector<bool>(31,0);
        }
        msg[inds[i]]=b;
        i++;
    }
    if(i){
        send_packet(msg);
        msg=vector<bool>(31,0);
        for(int j = 0;j<i;j++){
            msg[inds[j]]=1;
        }
        send_packet(msg);
    }
    else{
        msg=vector<bool>(31,1);
        send_packet(msg);
    }
}

vector<bool> receive_message(vector<vector<bool>> R) {
    vector<bool>C;
    for(int i = 0;i<31;i++){
        int c = 0;
        for(bool i : R[i]){
            c+=i;
        }
        if(c>=16){
            C.push_back(1);
        }
        else{
            C.push_back(0);
        }
    }
    vector<bool>ans;
    vector<int>inds;
    for(int i = 0;i<31;i++){
        if(C[i]==0){
            inds.push_back(i);
        }
    }
    for(int i = 31;i<R.size()-2;i++){
        for(int j : inds){
            ans.push_back(R[i][j]);
        }
    }
    int cn = 0;
    for(int j : inds){
        cn+=R[R.size()-1][j];
    }
    for(int i = 0;i<cn;i++){
        ans.push_back(R[R.size()-2][inds[i]]);
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...