Submission #65828

#TimeUsernameProblemLanguageResultExecution timeMemory
65828vsv21gmlParrots (IOI11_parrots)C++14
17 / 100
10 ms2400 KiB
#include "encoder.h"
#include "encoderlib.h"

int encode4(int i) {
	if (i < 8)	return i;
	return (i >> 3) + 8;
}

void encode(int N, int M[]){
	int i, position, value;
	
	for (i = 0; i < N; i++) {
		position = encode4(i) << 4;

		while(M[i] > 0) {
			if (M[i] >= 56) {
				send(position + encode4(56));
				M[i] -= 56;
			}
			else {
				value = 0;
				if (M[i] >= 32) {
					value += 32;
					M[i] -= 32;
				}
				if (M[i] >= 16) {
					value += 16;
					M[i] -= 16;
				}
				if (M[i] >= 8) {
					value += 8;
					M[i] -= 8;
				}

				if (value > 0) {
					send(position + encode4(value));
				}

				value = M[i];
				M[i] -= M[i];

				send(position + encode4(value));
				break;
			}
		}
	}
}
#include "decoder.h"
#include "decoderlib.h"

int decode4(int i) {
	if (i < 8)	return i;
	else return (i - 8) << 3;
}

int result[64];
void decode(int N, int L, int X[]){
	int i, position;
	for (i = 0; i < N; i++)	result[i] = 0;
	for (i = 0; i < L; i++) {
		position = decode4(X[i] >> 4);
		if(position > 0)	X[i] -= position << 4;
		result[position] += decode4(X[i]);
	}

	//for (i = 0; i < N; i++)	printf("[%d]=%d\n", i, result[i]);
	for (i = 0; i < N; i++)	output(result[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...