이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include"encoder.h"
#include"encoderlib.h"
#include<bits/stdc++.h>
using namespace std;
void encode(int n,int a[]){
vector<int>best(n*15,0);
int sig;
for(int xr=0;xr<256;xr++){
vector<int>vec;
for(int i=0;i<n;i++){
int x=a[i]^xr;
while(x>63)vec.push_back((i<<2)|3),x-=64;
while(x>15)vec.push_back((i<<2)|2),x-=16;
while(x>3)vec.push_back((i<<2)|1),x-=4;
while(x>0)vec.push_back((i<<2)|0),x-=1;
}
if(vec.size()<best.size())best=vec,sig=xr;
}
for(auto to:best)send(to);
for(int i=0;i<5;i++)send(sig);
}
#include"decoder.h"
#include"decoderlib.h"
#include<bits/stdc++.h>
using namespace std;
int res[64],counter[256];
void decode(int n,int m,int a[]){
for(int i=0;i<n;i++)res[i]=0;
for(int i=0;i<256;i++)counter[i]=0;
int mx=0,val;
for(int i=0;i<m;i++)
counter[a[i]]++;
for(int i=0;i<256;i++)if(counter[i]>mx)mx=counter[i],val=i;
mx=0;
for(int i=0;i<m;i++){
if(a[i]==val&&mx!=5){
mx++;
continue;
}
int data=a[i]&3;
if(data==0)res[a[i]>>2]+=1;
if(data==1)res[a[i]>>2]+=4;
if(data==2)res[a[i]>>2]+=16;
if(data==3)res[a[i]>>2]+=64;
}
for(int i=0;i<n;i++)output(res[i]^val);
}
컴파일 시 표준 에러 (stderr) 메시지
encoder.cpp: In function 'void encode(int, int*)':
encoder.cpp:20:29: warning: 'sig' may be used uninitialized in this function [-Wmaybe-uninitialized]
20 | for(int i=0;i<5;i++)send(sig);
| ~~~~^~~~~
decoder.cpp: In function 'void decode(int, int, int*)':
decoder.cpp:25:31: warning: 'val' may be used uninitialized in this function [-Wmaybe-uninitialized]
25 | for(int i=0;i<n;i++)output(res[i]^val);
| ~~~~~~^~~~~~~~~~~~
# | 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... |