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 "decoder.h"
#include "encoderlib.h"
#include "decoderlib.h"
#include <stdio.h>
#include <stdlib.h>
/*
#define MAX_N 1000
#define MAX_L 10000
#define CHANNEL_RANGE 65535
#define MAX_EXPANSION 10
static int message[MAX_N];
static int N; // NN;
static int encoded_message[MAX_L];
static int L;
static int output_message[MAX_N];
static int O;
inline
void my_assert(int e){ if (!e) abort(); };
void send(int a)
{
if(L == MAX_L) {
printf("Encoded message too long.\n");
exit(0);
}
encoded_message[L] = a;
L++;
}
void output(int b)
{
if(O == N)
O++;
if(O > N)
return;
output_message[O] = b;
O++;
}
static void shuffle()
{
int t,i;
i=0;
while(i < L-1) {
t = encoded_message[i];
encoded_message[i] = encoded_message[i+1];
encoded_message[i+1] = t;
i += 2;
}
}
static void check_encoded_message()
{
int i;
if(L > MAX_EXPANSION * N) {
printf("Encoded message too long.");
exit(0);
}
for(i=0; i < L; i++)
if((encoded_message[i] < 0) ||
(encoded_message[i] > CHANNEL_RANGE)) {
printf("Bad encoded integer.\n");
exit(0);
}
}
static int check_output()
{
int i;
if(O!=N)
return 0;
for(i = 0; i < N; i++)
if(message[i] != output_message[i])
return 0;
return 1;
}
*/
void send(int a);
//void output(int b);
void encode(int N, int M[])
{
int i,cont1,cont0;
for(i=0; i<N; i++){
for(int j=0;j<8;j++){
if(M[i]&(1<<j)){
send(8*i+j);
}
}
}
}
/*
void decode(int N, int L, int X[])
{
int i, b,ans[100],pos1,pos2;
for(int i=0;i<100;i++)ans[i]=0;
for(i=0; i<L; i++) {
pos1=X[i]/8;
pos2=X[i]%8;
ans[pos1]+=(1<<pos2);
}
for(int i=0;i<N;i++){
output(ans[i]);
}
}
*/
/*
int main()
{
int i,t;
double ratio;
my_assert(1==scanf("%d",&N));
for(i = 0; i < N; i++)
my_assert(1==scanf("%d",&message[i]));
ratio = 0;
for(t=0; t<2; t++) {
L = 0;
encode(N,message);
check_encoded_message();
if((double) L / N > ratio)
ratio = ((double)L)/N;
if(t==1)
shuffle();
// NN = 0;
O = 0;
decode(N,L,encoded_message);
if(!check_output()) {
printf("Incorrect.\n");
exit(0);
}
}
printf("Correct.\n");
fprintf(stderr,"Ratio = %3.3f\n",ratio);
return 0;
}*/
#include "encoder.h"
#include "decoder.h"
#include "encoderlib.h"
#include "decoderlib.h"
#include <stdio.h>
#include <stdlib.h>
/*
#define MAX_N 1000
#define MAX_L 10000
#define CHANNEL_RANGE 65535
#define MAX_EXPANSION 10
static int message[MAX_N];
static int N; // NN;
static int encoded_message[MAX_L];
static int L;
static int output_message[MAX_N];
static int O;
inline
void my_assert(int e){ if (!e) abort(); };
void send(int a)
{
if(L == MAX_L) {
printf("Encoded message too long.\n");
exit(0);
}
encoded_message[L] = a;
L++;
}
void output(int b)
{
if(O == N)
O++;
if(O > N)
return;
output_message[O] = b;
O++;
}
static void shuffle()
{
int t,i;
i=0;
while(i < L-1) {
t = encoded_message[i];
encoded_message[i] = encoded_message[i+1];
encoded_message[i+1] = t;
i += 2;
}
}
static void check_encoded_message()
{
int i;
if(L > MAX_EXPANSION * N) {
printf("Encoded message too long.");
exit(0);
}
for(i=0; i < L; i++)
if((encoded_message[i] < 0) ||
(encoded_message[i] > CHANNEL_RANGE)) {
printf("Bad encoded integer.\n");
exit(0);
}
}
static int check_output()
{
int i;
if(O!=N)
return 0;
for(i = 0; i < N; i++)
if(message[i] != output_message[i])
return 0;
return 1;
}
*/
//void send(int a);
void output(int b);
/*
void encode(int N, int M[])
{
int i,cont1,cont0;
for(i=0; i<N; i++){
for(int j=0;j<8;j++){
if(M[i]&(1<<j)){
send(8*i+j);
}
}
}
}
*/
void decode(int N, int L, int X[])
{
int i, b,ans[100],pos1,pos2;
for(int i=0;i<100;i++)ans[i]=0;
for(i=0; i<L; i++) {
pos1=X[i]/8;
pos2=X[i]%8;
ans[pos1]+=(1<<pos2);
}
for(int i=0;i<N;i++){
output(ans[i]);
}
}
/*
int main()
{
int i,t;
double ratio;
my_assert(1==scanf("%d",&N));
for(i = 0; i < N; i++)
my_assert(1==scanf("%d",&message[i]));
ratio = 0;
for(t=0; t<2; t++) {
L = 0;
encode(N,message);
check_encoded_message();
if((double) L / N > ratio)
ratio = ((double)L)/N;
if(t==1)
shuffle();
// NN = 0;
O = 0;
decode(N,L,encoded_message);
if(!check_output()) {
printf("Incorrect.\n");
exit(0);
}
}
printf("Correct.\n");
fprintf(stderr,"Ratio = %3.3f\n",ratio);
return 0;
}*/
Compilation message (stderr)
encoder.cpp: In function 'void encode(int, int*)':
encoder.cpp:88:9: warning: unused variable 'cont1' [-Wunused-variable]
int i,cont1,cont0;
^~~~~
encoder.cpp:88:15: warning: unused variable 'cont0' [-Wunused-variable]
int i,cont1,cont0;
^~~~~
decoder.cpp: In function 'void decode(int, int, int*)':
decoder.cpp:101:12: warning: unused variable 'b' [-Wunused-variable]
int i, b,ans[100],pos1,pos2;
^
# | 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... |