Submission #310789

#TimeUsernameProblemLanguageResultExecution timeMemory
310789LucaDantasParrots (IOI11_parrots)C++17
88 / 100
11 ms1792 KiB
#include "encoder.h"
#include "encoderlib.h"
#include<cstdio>
 
void encode(int N, int M[])
{
	if(N <= 32) {
		for(int i = 0; i < N; i++) {
			for(int bit = 0; bit < 8; bit++)
				if(M[i]&(1<<bit))
					send(8*i+bit);
		}
	} else {
		for(int i = 0; i < N; i++) {
			for(int bit = 0; bit < 4; bit++) {
				int cnt = (M[i] >> (2*bit))&3;
				while(cnt--) send(4*i+bit);
			}
		}
	}
}
#include "decoder.h"
#include "decoderlib.h"
#include<cstdio>
#include<cstring>
#include<algorithm>
 
int BIT[10000];
 
void decode(int N, int L, int X[])
{
	memset(BIT, 0, sizeof BIT);
	if(N <= 32) {
		std::sort(X, X+L);
		for(int i = 0; i < L; i++)
			BIT[X[i]] = 1;
		for(int i = 0; i < N; i++) {
			int here = 0;
			for(int bit = 0; bit < 8; bit++) {
				if(BIT[8*i+bit])
					here += (1 << bit);
			}
			output(here);
		}
	} else {
		for(int i = 0; i < L; i++)
			BIT[X[i]]++;
		for(int i = 0; i < N; i++) {
			int here = 0;
			for(int bit = 0; bit < 4; bit++) {
				here += (BIT[4*i+bit]) << (2*bit);
			}
			output(here);
		}
	}
}
#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...