Submission #234338

#TimeUsernameProblemLanguageResultExecution timeMemory
234338Nodir_BobievParrots (IOI11_parrots)C++14
81 / 100
15 ms1792 KiB
#include "encoder.h"
#include "encoderlib.h"
#include <algorithm>
void encode(int N, int M[])
{
    for(int i=0; i<std::min(32,N); i++){
        int x = M[i];
        for( int j = 0; j < 8; j ++ ){
            if( (x&(1<<j)) ){
                send((i<<3)+j);
            }
        }
    }
    for( int i = std::min(32,N); i < N; i ++ ){
        int x = M[i];
        for( int j = 0; j < 8; j ++ ){
            if( (x&(1<<j)) ){
                send((i-32)+j);
                send((i-32)+j);
            }
        }
    }
}
#include "decoder.h"
#include "decoderlib.h"
#include <algorithm>

void decode(int N, int L, int X[])
{
    int cnt[N][10]={};
    for( int i = 0; i < L; i ++ ){
        int x = X[i];
        int y = x % 8;
        int z = (x / 8);
        cnt[z][y] ++;
    }
    int ans[N] = {};
    for( int i = 0; i < std::min(32,N); i ++ ){
        for( int j = 0; j < 8; j ++ ){
            if( cnt[i][j] == 1 || cnt[i][j] == 3){
                ans[i] += (1<<j);
            }
            if( cnt[i][j] == 2 || cnt[i][j] == 3){
                ans[i+32] += (1<<j);
            }
        }
    }
    for( int i = 0; i < N; i ++ ){
        output(ans[i]);
    }
}
#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...