제출 #596034

#제출 시각아이디문제언어결과실행 시간메모리
596034fuad27앵무새 (IOI11_parrots)C++17
98 / 100
12 ms1312 KiB
#include "encoder.h" #include "encoderlib.h" #include<bits/stdc++.h> using namespace std; void encode(int N, int M[]) { int cntone=0,cntzero=0; for(int i = 0;i<N;i++) { for(int j = 0;j<8;j++) { if(M[i]&(1ll<<j))cntone++; else cntzero++; } } if(cntone+3 <= cntzero) { for(int i = 0;i<N;i++) { for(int j = 0;j<8;j++) { if(M[i]&(1ll<<j)) { if(i < 32) { long long num = i*(1ll<<3)+j; send(num); } else { long long i_=i-32; long long num = i_*(1ll<<3)+j; send(num); send(num); } } } } } else { send(0); send(0); send(0); send(0); for(int i = 0;i<N;i++) { for(int j = 0;j<8;j++) { if(!(M[i]&(1ll<<j))) { if(i < 32) { long long num = i*(1ll<<3)+j; send(num); } else { long long i_=i-32; long long num = i_*(1ll<<3)+j; send(num); send(num); } } } } } }
#include "decoder.h" #include "decoderlib.h" #include<bits/stdc++.h> using namespace std; void decode(int N, int L, int X[]) { int ans[N]; for(int i = 0;i<N;i++)ans[i]=0; map<int,int> cnt; for(int i = 0;i<L;i++)cnt[X[i]]++; bool check=(cnt[0]>3); if(cnt[0]>3)cnt[0]-=4; // cout << check << endl; for(int i = 0;i<L;i++) { if(cnt[X[i]]==0)continue; if(cnt[X[i]]==1) { ans[X[i]/8]|=(1ll<<(X[i]%8)); } else if(cnt[X[i]]==2) { ans[X[i]/8+32]|=(1ll<<(X[i]%8)); } else if(cnt[X[i]]==3){ ans[X[i]/8+32]|=(1ll<<(X[i]%8)); ans[X[i]/8]|=(1ll<<(X[i]%8)); } } for(int i = 0;i<N;i++){ long long k = 0; if(check) { for(int j =0;j<8;j++) { k|=(1ll<<j); if(ans[i]&(1ll<<j))k-=(1ll<<j); } } else k = ans[i]; output(k); } }
#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...