제출 #256266

#제출 시각아이디문제언어결과실행 시간메모리
256266SamAnd앵무새 (IOI11_parrots)C++17
88 / 100
11 ms1792 KiB
#include "encoder.h"
#include "encoderlib.h"

void encode(int N, int M[])
{
    int n = N;

    if (n <= 32)
    {
        int z = 0;
        for (int i = 0; i < n; ++i)
        {
            int x = M[i];
            for (int j = 0; j < 8; ++j)
            {
                if ((x & (1 << j)))
                    send(z);
                z++;
            }
        }
    }
    else
    {
        int z = 0;
        for (int i = 0; i < n; ++i)
        {
            int x = M[i];
            for (int j = 0; j < 4; ++j)
            {
                if ((x & (1 << j)))
                    send(z);
                if ((x & (1 << (j + 4))))
                {
                    send(z);
                    send(z);
                }
                z++;
            }
        }
    }
}
#include "decoder.h"
#include "decoderlib.h"

void decode(int N, int L, int X[])
{
    int c[1003] = {};
    int n = N;
    for (int i = 0; i < L; ++i)
        ++c[X[i]];

    if (n <= 32)
    {
        int z = 0;
        for (int i = 0; i < n; ++i)
        {
            int x = 0;
            for (int j = 0; j < 8; ++j)
            {
                if (c[z])
                    x |= (1 << j);
                z++;
            }
            output(x);
        }
    }
    else
    {
        int z = 0;
        for (int i = 0; i < n; ++i)
        {
            int x = 0;
            for (int j = 0; j < 4; ++j)
            {
                if ((c[z] & 1))
                    x |= (1 << j);
                if ((c[z] & 2))
                    x |= (1 << (j + 4));
                z++;
            }
            output(x);
        }
    }
}
#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...