Submission #13494

# Submission time Handle Problem Language Result Execution time Memory
13494 2015-02-22T02:28:02 Z ainta Parrots (IOI11_parrots) C++
17 / 100
2000 ms 40112 KB
#include "encoder.h"
#include "encoderlib.h"
static int P[271][257][72], T[300];
void encode(int N, int M[])
{
	int i, j, L, ck, k;
	for (k = 1; k <= 256; k++){
		P[0][k][0] = 1;
		for (i = 1; i < 270; i++){
			for (j = 0; j < 70; j++){
				T[j] += P[i - 1][k][j] * (k + i - 1);
				T[j + 1] += T[j] >> 8;
				T[j] &= 255;
			}
			for (j = 70; j >= 0; j--){
				if (T[j] % i){
					T[j - 1] += ((T[j] % i) << 8);
				}
				T[j] /= i;
			}
			for (j = 0; j <= 70; j++){
				if (T[j])L = j;
				P[i][k][j] = T[j];
				T[j] = 0;
			}
			if (k == 256 && L >= N)break;
		}
		if (i != 270)break;
	}
	L = i;
	int pv = 0;
	for (j = 0; j < N; j++)T[j] = M[j];
	for (i = L - 1; i >= 0; i--){
		while (1){
			ck = 0;
			for (j = 70; j >= 0; j--){
				if (!ck && T[j] - P[i][256-pv][j] != 0){
					if (T[j] < P[i][256-pv][j])break;
					ck = 1;
				}
				T[j] -= P[i][256-pv][j];
			}
			if (j != -1){
				for (j = j + 1; j <= 70; j++)T[j] += P[i][256 - pv][j];
				break;
			}
			for (j = 0; j < 70; j++){
				if (T[j] < 0)T[j + 1]--, T[j] += 256;
			}
			pv++;
		}
		send(pv);
	}
}
#include "decoder.h"
#include "decoderlib.h"
#include<stdio.h>
#include<algorithm>
using namespace std;
static int P[271][257][72], T[300], Res[300];
void decode(int N, int L, int X[])
{
	sort(X, X + L);
	int i, j, k, pv = 0;
	for (k = 1; k <= 256; k++){
		P[0][k][0] = 1;
		for (i = 1; i < 270; i++){
			for (j = 0; j < 70; j++){
				T[j] += P[i - 1][k][j] * (k + i - 1);
				T[j + 1] += T[j] >> 8;
				T[j] &= 255;
			}
			for (j = 70; j >= 0; j--){
				if (T[j] % i){
					T[j - 1] += ((T[j] % i) << 8);
				}
				T[j] /= i;
			}
			for (j = 0; j <= 70; j++){
				P[i][k][j] = T[j];
				T[j] = 0;
			}
		}
	}
	for (i = 0; i < L; i++){
		while (pv < X[i]){
			for (j = 0; j <= 70; j++){
				Res[j] += P[L - i - 1][256 - pv][j];
			}
			pv++;
		}
	}
	for (i = 0; i <= 70; i++){
		Res[i + 1] += (Res[i] >> 8);
		Res[i] &= 255;
	}
	for (i = 0; i < N; i++){
		output(Res[i]);
		Res[i] = 0;
	}
}

Compilation message

encoder.cpp: In function 'void encode(int, int*)':
encoder.cpp:26:22: warning: 'L' may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (k == 256 && L >= N)break;
                    ~~^~~~
# Verdict Execution time Memory Grader output
1 Correct 1779 ms 40112 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 2071 ms 20252 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2082 ms 20252 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2081 ms 20252 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2079 ms 20252 KB Time limit exceeded
2 Execution timed out 2079 ms 20308 KB Time limit exceeded
3 Execution timed out 2086 ms 20308 KB Time limit exceeded
4 Execution timed out 2089 ms 20444 KB Time limit exceeded
5 Execution timed out 2088 ms 20456 KB Time limit exceeded
6 Execution timed out 2076 ms 20456 KB Time limit exceeded
7 Execution timed out 2073 ms 20456 KB Time limit exceeded