This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "encoder.h"
#include "encoderlib.h"
#include<cstdio>
void encode(int N, int M[])
{
if(N <= 32) {
for(int i = 0; i < N; i++) {
for(int bit = 0; bit < 8; bit++)
if(M[i]&(1<<bit))
send(8*i+bit);
}
} else {
for(int i = 0; i < N; i++) {
for(int bit = 0; bit < 4; bit++) {
int cnt = (M[i] >> (2*bit))&3;
while(cnt--) send(4*i+bit);
}
}
}
}
#include "decoder.h"
#include "decoderlib.h"
#include<cstdio>
#include<cstring>
#include<algorithm>
int BIT[10000];
void decode(int N, int L, int X[])
{
memset(BIT, 0, sizeof BIT);
if(N <= 32) {
std::sort(X, X+L);
for(int i = 0; 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])
here += (1 << bit);
}
output(here);
}
} else {
for(int i = 0; i < L; i++)
BIT[X[i]]++;
for(int i = 0; i < N; i++) {
int here = 0;
for(int bit = 0; bit < 4; bit++) {
here += (BIT[4*i+bit]) << (2*bit);
}
output(here);
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |