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"
    void encode(int N, int M[])
    {
        int a=0,q=0,inv=0;
        for(int i=0; i<N; i++)
        {
            int y=M[i];
            for(int j=a;j<=a+3;j++)
            {
                q+=y%4;
                y/=4;
            }
            a+=4;
        }
        if(q>6*N)
        {
            inv=1;
            for(int i=1;i<=4;i++)
                send(0);
        }
        a=0;
        for(int i=0; i<N; i++)
        {
            int y=M[i];
            for(int j=a;j<=a+3;j++)
            {
                if(inv==0)
                for(int t=1;t<=y%4;t++)
                    send(j);
                else
                for(int t=1;t<=3-y%4;t++)
                    send(j);
                y/=4;
            }
            a+=4;
        }
    }
    #include "decoder.h"
    #include "decoderlib.h"
    int v[300];
    void decode(int N, int L, int X[])
    {
        for(int i=0;i<=255;i++)
            v[i]=0;
        for(int i=0; i<L; i++)
            v[X[i]]++;
        if(v[0]>=4)
        {
            v[0]-=4;
            for(int i=0;i<=255;i++)
                v[i]=3-v[i];
        }
        int a=0;
        for(int i=0;i<N;i++)
        {
            int b=0;
            int p=1;
            for(int j=a;j<=a+3;j++)
            {
                b+=p*v[j];
                p*=4;
            }
            output(b);
            a+=4;
        }
    }
| # | 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... |