#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)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]);
}
컴파일 시 표준 에러 (stderr) 메시지
# 2번째 컴파일 단계
decoder.cpp: In function 'void decode(int, int, int*)':
decoder.cpp:25:29: warning: right shift count >= width of type [-Wshift-count-overflow]
25 | if(h==2||h==3)a[X[i]>>3+32]+=(1<<b);
| ~~~~^~~~~~
# | 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... |