Submission #146886

#TimeUsernameProblemLanguageResultExecution timeMemory
146886popovicirobertParrots (IOI11_parrots)C++14
81 / 100
10 ms1776 KiB
#include "encoder.h"
#include "encoderlib.h"
#include <bits/stdc++.h>

using namespace std;

void encode(int n, int M[]) {
    for(int i = 0; i < n; i++) {
        int cur = (i << 3);
        for(int j = 0; j < 4; j++) {
            send(cur | (M[i] >> 5));
        }
        for(int j = 0; j < 2; j++) {
            send(cur | ((M[i] >> 2) & ((1 << 3) - 1)));
        }
        send(cur | (M[i] & ((1 << 2) - 1)));
    }
}
#include "decoder.h"
#include "decoderlib.h"
#include <bits/stdc++.h>

using namespace std;

void decode(int n, int l, int X[]) {
    vector < vector <int> > pos(l);
    for(int i = 0; i < l; i++) {
        pos[X[i] >> 3].push_back(X[i] & ((1 << 3) - 1));
    }
    for(int i = 0; i < n; i++) {
        map <int, int> mp;
        for(auto it : pos[i]) {
            mp[it]++;
        }
        int cur = 0;
        for(auto &it : mp) {
            if(it.second >= 4) {
                cur = (cur << 3) + it.first;
                it.second -= 4;
                break;
            }
        }
        for(auto &it : mp) {
            if(it.second >= 2) {
                cur = (cur << 3) + it.first;
                it.second -= 2;
                break;
            }
        }
        for(auto it : mp) {
            if(it.second) {
                cur = (cur << 2) + it.first;
                break;
            }
        }
        output(cur);
    }
}
#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...