Submission #1359716

#TimeUsernameProblemLanguageResultExecution timeMemory
1359716osmiyumParrots (IOI11_parrots)C++20
24 / 100
4 ms836 KiB
#include "encoder.h"
#include "encoderlib.h"

void encode(int N, int M[]) {
    for (int i = 0; i < N; i++) {
        // Her 8-bitlik sayıyı 2-bitlik 4 parçaya bölüyoruz
        for (int j = 0; j < 4; j++) {
            // j=0: 0-1. bitler, j=1: 2-3. bitler...
            int val = (M[i] >> (j * 2)) & 3;
            
            // Papağan değeri: İlk 6 bit indeks, son 2 bit hangi parça olduğu
            // Toplam 8 bit (0-255)
            int parrot_val = (i << 2) | j;
            
            // Parçanın sayısal değeri (0, 1, 2 veya 3) kadar papağan gönder
            // NOT: Eğer val 0 ise hiç papağan gitmez.
            for (int k = 0; k < val; k++) {
                send(parrot_val);
            }
        }
    }
}
#include "decoder.h"
#include "decoderlib.h"
#include <vector>

void decode(int N, int L, int X[]) {
    // Papağan değerlerinin kaçar kez geldiğini tutan frekans dizisi
    int counts[256] = {0};
    for (int i = 0; i < L; i++) {
        counts[X[i]]++;
    }

    for (int i = 0; i < N; i++) {
        int original_byte = 0;
        for (int j = 0; j < 4; j++) {
            // encode kısmındaki parrot_val'ı geri çözüyoruz
            int parrot_val = (i << 2) | j;
            int val = counts[parrot_val];
            
            // Parçayı ait olduğu bit pozisyonuna yerleştir
            original_byte |= (val << (j * 2));
        }
        output(original_byte);
    }
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...