제출 #961399

#제출 시각아이디문제언어결과실행 시간메모리
961399emptypringlescan앵무새 (IOI11_parrots)C++17
83 / 100
19 ms1984 KiB
#include "encoder.h" #include "encoderlib.h" #include <bits/stdc++.h> using namespace std; void encode(int n, int m[]){ if(n>32) for(int i=0; i<6*n; i++) send(255); mt19937 rng(177013); int t=n*8,cnt=0; for(int i=0; i<n; i++){ for(int j=7; j>=0; j--){ if(m[i]>>j&1) cnt++; } } int num=0,x=0; if(cnt==t/2){ while(true){ num++; x=rng()%t; if(m[x/8]>>(x%8)&1){ m[x/8]^=1<<(x%8); for(int i=0; i<num+1; i++) send(255); break; } } } int prev=0; if(cnt<=t/2){ for(int i=0; i<n; i++){ for(int j=0; j<8; j++){ if(m[i]>>j&1){ prev++; send(prev); } else send(prev); } } } else{ for(int i=0; i<n; i++){ for(int j=0; j<8; j++){ if(!(m[i]>>j&1)){ prev++; send(prev); } else send(prev); } } send(255); } if(num) m[x/8]^=1<<(x%8); }
#include "decoder.h" #include "decoderlib.h" #include <bits/stdc++.h> using namespace std; void decode(int n, int l, int x[]){ sort(x,x+l); assert(l>=8*n); mt19937 rng(177013); if(n>32) l-=6*n; int bits[8*n],ex=l-8*n; if(ex==1){ int prev=0; for(int i=0; i<8*n; i++){ bits[i]=x[i]-prev; prev=x[i]; bits[i]^=1; } } else{ int prev=0; for(int i=0; i<8*n; i++){ bits[i]=x[i]-prev; prev=x[i]; } if(ex>0){ int y=0; for(int i=0; i<ex-1; i++) y=rng()%(8*n); //cout << y << ' '; bits[y]^=1; } } for(int i=0; i<n; i++){ int ret=0; for(int j=0; j<8; j++){ ret+=bits[i*8+j]<<j; } output(ret); } }
#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...