Submission #4626

#TimeUsernameProblemLanguageResultExecution timeMemory
4626cki86201Parrots (IOI11_parrots)C++98
98 / 100
13 ms2432 KiB
#include "encoder.h"
#include "encoderlib.h"

//98point;
void encode(int N, int M[])
{
	int i;
	for(i=0;i<N;i++){
		int b = i<<2;
		int x[4]={0,0,0,0},sum=0;;
		for(int j=0;j<M[i];j++){
			if(sum<7){x[0]++,sum++;continue;}
			if(x[0]){x[0]=0,x[1]++,sum=x[1]+x[2]+x[3];continue;}
			if(x[1]){x[1]=0,x[2]++,sum=x[2]+x[3];continue;}
			if(x[2]){x[2]=0,x[3]++,sum=x[3];continue;}
		}
		for(int j=0;j<4;j++){
			for(int k=0;k<x[j];k++)send(b+j);
		}
	}
}
#include "decoder.h"
#include "decoderlib.h"

void decode(int N, int L, int X[])
{
	int i,op[64];
	int p[64][4];
	for(i=0;i<64;i++)op[i]=p[i][0]=p[i][1]=p[i][2]=p[i][3]=0;
	for(i=0;i<L;i++)p[X[i]>>2][X[i]%4]++;
	for(i=0;i<N;i++){
		int x[4]={p[i][0],p[i][1],p[i][2],p[i][3]};
		int cnt=0;
		while(x[0]|x[1]|x[2]|x[3]){
			cnt++;
			if(x[0]){x[0]--;continue;}
			if(x[1]){x[1]--;x[0]=7-x[3]-x[2]-x[1];continue;}
			if(x[2]){x[2]--;x[1]=7-x[3]-x[2]-x[0];continue;}
			if(x[3]){x[3]--;x[2]=7-x[3]-x[1]-x[0];continue;}
		}
		op[i]=cnt;
	}
	for(i=0;i<N;i++)output(op[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...