제출 #1354433

#제출 시각아이디문제언어결과실행 시간메모리
1354433MuhammadSaram앵무새 (IOI11_parrots)C++20
88 / 100
4 ms836 KiB
#include "encoder.h"
#include "encoderlib.h"
#include <bits/stdc++.h>

void encode(int n, int a[])
{
	if (n<=32)
	{
		for (int i=0;i<n;i++)
		{
			int ad=(i/2)*16;
			if (i%2)
			{
				for (int j=0;j<4;j++) send(ad+a[i]/16);
				for (int j=0;j<8;j++) send(ad+a[i]%16);
			}
			else
			{
				send(ad+a[i]/16);
				send(ad+a[i]%16), send(ad+a[i]%16);
			}
		}
	}
	else
	{
		int id=0;
		for (int i=0;i<n;i++)
		{
			for (int x=64;x>=1;x/=4,id++)
			{
				for (int c=0;c<a[i]/x;c++)
					send(id);
				a[i]%=x;
			}
		}
	}
}
#include "decoder.h"
#include "decoderlib.h"

void decode(int n, int m, int a[])
{
	int cnt[256]={};
	for (int i=0;i<m;i++) cnt[a[i]]++;
	if (n<=32)
	{
		for (int i=0;i<n;i++)
		{
			int ad=(i/2)*16, val=0;
			if (i%2)
			{
				for (int j=ad;j<ad+16;j++)
				{
					if (cnt[j]&4) val+=(j-ad)*16;
					if(cnt[j]&8) val+=j-ad;
				}
			}
			else
			{
				for (int j=ad;j<ad+16;j++)
				{
					if (cnt[j]&1) val+=(j-ad)*16;
					if(cnt[j]&2) val+=j-ad;
				}
			}
			output(val);
		}
	}
	else
	{
		int id=0;
		for (int i=0;i<n;i++)
		{
			int val=0;
			for (int x=64;x>=1;x/=4,id++)
				val+=cnt[id]*x;
			output(val);
		}
	}
}
#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...