제출 #310788

#제출 시각아이디문제언어결과실행 시간메모리
310788LucaDantas앵무새 (IOI11_parrots)C++17
81 / 100
4 ms1792 KiB
#include "encoder.h"
#include "encoderlib.h"
#include<cstdio>
#include<cstring>

int colocar[600];

void encode(int N, int M[])
{
	memset(colocar, 0, sizeof colocar);
	int ptr = 0;
	for(int i = 0; i < N; i++) {
		for(int bit = 0; bit < 8; bit++)
			if(M[i]&(1<<bit))
				colocar[8*i+bit] = 1, ptr++;
	}
	if(ptr > 256) {
		send(0), send(0);
		for(int i = 0; i < 512; i++)
			colocar[i] = !colocar[i];
	}
	for (int i = 0; i < 512; i++)
		if(colocar[i])
			send(i);
}
#include "decoder.h"
#include "decoderlib.h"
#include<cstdio>
#include<cstring>
#include<algorithm>

int BIT[10000];

void decode(int N, int L, int X[])
{
	std::sort(X, X+L);
	int start = 0, ok = 1;
	if(L > 1 && X[1] == 0)
		start = 2, ok = 0;
	memset(BIT, 0, sizeof BIT);
	for(int i = start; 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] == ok)
				here += (1 << 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...