#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]);
}
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;
~~^~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1105 ms |
39960 KB |
Error : Output is wrong |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
2077 ms |
20500 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
2074 ms |
20500 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
2072 ms |
20500 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
2068 ms |
20500 KB |
Time limit exceeded |
2 |
Execution timed out |
2078 ms |
20500 KB |
Time limit exceeded |
3 |
Execution timed out |
2073 ms |
20500 KB |
Time limit exceeded |
4 |
Execution timed out |
2076 ms |
20516 KB |
Time limit exceeded |
5 |
Execution timed out |
2082 ms |
20516 KB |
Time limit exceeded |
6 |
Execution timed out |
2073 ms |
20568 KB |
Time limit exceeded |
7 |
Execution timed out |
2079 ms |
20568 KB |
Time limit exceeded |