Submission #1199879

#TimeUsernameProblemLanguageResultExecution timeMemory
1199879raphaelpParrots (IOI11_parrots)C++20
100 / 100
7 ms840 KiB
#include "encoder.h"
#include "encoderlib.h"
#include <bits/stdc++.h>
using namespace std;

void encode(int N, int M[])
{
    vector<int> Tab;
    for (int i = 0; i < N; i++)
    {
        for (int j = 7; j >= 0; j--)
        {
            Tab.push_back((M[i] & (1 << j)) ? 1 : 0);
        }
    }
    int random = 0;
    int ones = 500;
    for (int j = 0; j < 8; j++)
    {
        srand(random);
        ones = 0;
        for (int i = 0; i < Tab.size(); i++)
        {
            int x = rand() % 2;
            if (x)
                Tab[i] = 1 - Tab[i];
            if (Tab[i])
                ones++;
        }
        if (ones < 253)
            break;
        random++;
    }
    int buff = 0;
    for (int i = 2; i >= 0; i--)
    {
        if (random & (1 << i))
            buff++;
        else
            send(buff);
    }
    // cout << buff << ' ';
    for (int i = 0; i < Tab.size(); i++)
    {
        if (Tab[i])
            buff++;
        else
            send(buff);
        // cout << buff << ' ';
    }
}

/*int main()
{
    int N;
    cin >> N;
    int Tab[N];
    for (int i = 0; i < N; i++)
        cin >> Tab[i];
    encode(N, Tab);
}*/
#include "decoder.h"
#include "decoderlib.h"
#include <bits/stdc++.h>
using namespace std;

void decode(int N, int L, int X[])
{
    vector<int> Tab;
    for (int i = 0; i < L; i++)
        Tab.push_back(X[i]);
    sort(Tab.begin(), Tab.end());
    vector<int> message;
    int buff = 0;
    for (int i = 0; i < 256; i++)
    {
        while (buff < Tab.size() && Tab[buff] == i)
        {
            message.push_back(0);
            buff++;
        }
        message.push_back(1);
    }
    int random = 0;
    for (int i = 0; i < 3; i++)
    {
        random *= 2;
        if (message[i])
            random++;
    }
    for (int i = 0; i <= random; i++)
    {
        srand(i);
        for (int j = 3; j < message.size(); j++)
        {
            int x = rand() % 2;
            if (x)
                message[j] = 1 - message[j];
        }
    }
    buff = 3;
    for (int i = 0; i < N; i++)
    {
        int x = 0;
        for (int j = 0; j < 8; j++)
        {
            x *= 2;
            if (message[buff])
                x++;
            buff++;
        }
        output(x);
        // cout << x << ' ';
    }
}

/*int main()
{
    int N, L;
    cin >> N >> L;
    int Tab[L];
    for (int i = 0; i < L; i++)
        cin >> Tab[i];
    decode(N, L, Tab);
}*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...