제출 #1186524

#제출 시각아이디문제언어결과실행 시간메모리
1186524simona1230앵무새 (IOI11_parrots)C++20
98 / 100
4 ms840 KiB
#include "encoder.h"
#include "encoderlib.h"
#include <bits/stdc++.h>
using namespace std;

void encode(int N, int M[])
{
    int x=0,y=1;
    while(x*2<=N-1)y*=2,x++;

    int cnt=0;
    for(int i=0;i<8;i++)
        for(int j=0;j<min(N,32);j++)
            if(M[j]&(1<<i))cnt++;

    if(cnt>N*2)send(0),send(0),send(0),send(0);

    int cnt1=0;
    for(int i=0;i<8;i++)
        for(int j=32;j<N;j++)
            if(M[j]&(1<<i))cnt1++;

    if(cnt1>N*2)send(1),send(1),send(1),send(1);

    for(int i=0;i<8;i++)
        for(int j=0;j<min(N,32);j++)
            if(cnt>N*2&&!(M[j]&(1<<i)) ||
                cnt<=2*N&&(M[j]&(1<<i)))
                {
                    //cout<<(j<<3)+i<<" "<<j<<" "<<i<<endl;
                    send((j<<3)+i);
                }

    for(int i=0;i<8;i++)
        for(int j=32;j<N;j++)
            if(cnt1>N*2&&!(M[j]&(1<<i)) ||
                cnt1<=2*N&&(M[j]&(1<<i)))
                {
                    //cout<<(j<<3)+i<<" "<<j<<" "<<i<<endl;
                    send(((j-32)<<3)+i);
                    send(((j-32)<<3)+i);
                }
}
#include "decoder.h"
#include "decoderlib.h"
#include <bits/stdc++.h>
using namespace std;

int a[128],c[256];
void decode(int N, int L, int X[])
{
    for(int i=0;i<N;i++)
        a[i]=0;
    for(int i=0;i<L;i++)
        c[X[i]]++;
    int z=c[0]/4;
    c[0]%=4;
    int o=c[1]/4;
    c[1]%=4;

    for(int i=0;i<L;i++)
    {
        int b=(X[i]&1)+(X[i]&2)+(X[i]&4);
        if(c[X[i]]==0)continue;

        int h=c[X[i]];
        if(h==1||h==3)a[X[i]>>3]+=(1<<b);
        if(h==2||h==3)
        {
            //cout<<"in"<<endl;
            a[(X[i]>>3)+32]+=(1<<b);
        }


        c[X[i]]=0;
    }

    if(z)
    {
        for(int i=0;i<32;i++)
            a[i]=255-a[i];
    }

    if(o)
    {
        for(int i=32;i<N;i++)
            a[i]=255-a[i];
    }

    for(int i=0;i<N;i++)
    {
        output(a[i]);
        //cout<<a[i]<<" ";
    }
    //cout<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...