제출 #421985

#제출 시각아이디문제언어결과실행 시간메모리
421985pliam앵무새 (IOI11_parrots)C++14
88 / 100
13 ms1368 KiB
#include "encoder.h" #include "encoderlib.h" void encode(int N, int M[]) { if(N<=32){ //binary system for(int num=0;num<N;num++){ int pos=0; while(M[num]>0){ if(M[num]&1){ send((num<<3)|pos); } M[num]>>=1; pos++; } } }else{ //4-ary system for(int num=0;num<N;num++){ int pos=0; while(M[num]>0){ int cnt=M[num]&3;//mod4=mod(2^2), we keep last 2 digits if(cnt>=1){ send((num<<2)|pos); }if(cnt>=2){ send((num<<2)|pos); }if(cnt==3){ send((num<<2)|pos); } M[num]>>=2; pos++; } } } }
#include "decoder.h" #include "decoderlib.h" #include <bits/stdc++.h> using namespace std; void decode(int N, int L, int X[]) { map<int,int> freq; for(int i=0;i<L;i++){ freq[X[i]]++; } if(N<=32){ //binary system for(int num=0;num<N;num++){ int val=0; for(int pos=0;pos<8;pos++){ int mask=(num<<3)|pos; if(freq.count(mask)){ val|=(1<<pos); } } output(val); } }else{ //4-ary system for(int num=0;num<N;num++){ int val=0; for(int pos=0;pos<4;pos++){ int mask=(num<<2)|pos; if(freq.count(mask)){ val|=(1<<(2*pos))*freq[mask]; } } output(val); } } }
#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...