Submission #1273579

#TimeUsernameProblemLanguageResultExecution timeMemory
1273579mkkkkkkkkMessage (IOI24_message)C++20
0 / 100
188 ms736 KiB
#include "message.h"
#include <bits/stdc++.h>

using namespace std;

void sett(vector<bool>& vec,vector<int>& vecc,vector<bool>& vec2)
{
    for(int i=0;i<31;i++)
        vec2.push_back(0);

    for(int i=0;i<vec.size();i++)
    {
        vec2[vecc[i]]=vec[i];
    }
}

void send_message(std::vector<bool> M, std::vector<bool> C)
{
    vector<int> vecc;
    for(int i=0;i<C.size();i++)
    {
        vector<bool> vec;
        for(int i=0;i<31;i++)
        vec.push_back(C[i]);

        send_packet(vec);
        if(C[i]==0)
            vecc.push_back(i);
    }
    int br=M.size();
    vector<bool> vec2;
    for(int i=0;i<16;i++,br=br>>1)
    {
        vec2.push_back(br&1);
    }
    vector<bool> temp;
    sett(vec2,vecc,temp);
    send_packet(temp);
    vec2.clear();
    temp.clear();
    for(int i=0;i<M.size();i++)
    {
        vec2.push_back(M[i]);
        if(i%16==15 || i==M.size()-1)
        {
            sett(vec2,vecc,temp);
            send_packet(temp);
            vec2.clear();
            temp.clear();
        }
    }


}

std::vector<bool> receive_message(std::vector<std::vector<bool>> R)
{
    vector<int> vecc;
    for(int i=0;i<31;i++)
    {
        int cnt=0;
        for(auto it : R[i])
        {
            if(it==0)
                cnt++;
        }
        if(cnt>=16)
            vecc.push_back(i);
    }
    int sz=0;
    for(int i=0;i<16;i++)
    {
        sz+=(R[31][vecc[i]])*pow(2,i);
    }
    vector<bool> res;
    for(int i=32;i<R.size();i++)
    {
        for(int j=0;j<16;j++)
        {
            if(sz%16!=0 && j==sz%16)
                break;
            int pos=vecc[j];
            res.push_back(R[i][pos]);

        }
    }
    return res;

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...