Submission #1273596

#TimeUsernameProblemLanguageResultExecution timeMemory
1273596mkkkkkkkkMessage (IOI24_message)C++20
0 / 100
2 ms740 KiB
#include <bits/stdc++.h>

using namespace std;

#include "message.h"

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++)
    {
        cout<<i<<" xxxxx "<<C[i]<<endl;
        vector<bool> vec;
        for(int j=0;j<31;j++)
        vec.push_back(C[i]);

        for(auto it : vec)
            cout<<it<<" xxX ";
        cout<<endl;

        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);
    for(auto it : temp)
        cout<<it<<" X ";
    cout<<endl;
    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;
        cout<<i<<endl;
        for(auto it : R[i])
        {
            cout<<it<<" XXXx "<<cnt<<endl;
            if(it==0)
                cnt++;
        }
        cout<<i<<" xxXxx "<<cnt<<endl;
        if(cnt>=16)
            vecc.push_back(i);
    }
    int sz=0;
    for(int i=0;i<16;i++)
    {
        cout<<i<<" XXX "<<vecc[i]<<endl;
        sz+=(R[31][vecc[i]])*pow(2,i);
    }
    cout<<sz<<" XX"<<endl;
    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 && i==R.size()-1)
                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...