제출 #1157502

#제출 시각아이디문제언어결과실행 시간메모리
1157502alexddParrots (IOI11_parrots)C++20
0 / 100
1 ms836 KiB
#include "encoder.h" #include "encoderlib.h" #include<bits/stdc++.h> using namespace std; vector<int> solve(const vector<int> sir) { for(int cnt_id=0;cnt_id<8;cnt_id++) { int cnt_val = 8 - cnt_id; vector<int> v; for(int i=0;i<sir.size();i+=cnt_val) { v.push_back(0); for(int j=i;j<min(i+cnt_val,(int)sir.size());j++) if(sir[j]==1) v.back() += (1<<(j-i)); } int cate=0; for(int i=1;i<v.size();i++) if(v[i] < v[i-1]) cate++; if((1<<cnt_id) <= cate) continue; vector<int> sol; int cur=0; for(int i=0;i<v.size();i++) { if(i>0 && v[i] < v[i-1]) cur++; sol.push_back((cur<<cnt_val) + v[i]); } for(int i=1;i<sol.size();i++) assert(sol[i]>=sol[i-1]); //cerr<<cnt_id<<" cnt_id encoder\n"; return sol; } assert(0); } void encode(int N, int M[]) { vector<int> sir; for(int i=0;i<N;i++) { for(int j=0;j<8;j++) { if((1<<j)&M[i]) sir.push_back(1); else sir.push_back(0); } } assert((int)sir.size() == 8*N); vector<int> v = solve(sir); if((int)v.size()%2==0) v.push_back(255); reverse(sir.begin(),sir.end()); vector<int> vrev = solve(sir); if((int)vrev.size()%2==1) vrev.push_back(255); if((int)v.size() <= (int)vrev.size() || 1) { for(int x:v) send(x); } else { for(int x:vrev) send(x); } } /* */
#include "decoder.h" #include "decoderlib.h" #include<bits/stdc++.h> using namespace std; void decode(int N, int lun, int X[]) { sort(X,X+lun); if(lun%2==0) { for(int cnt_val=1;;cnt_val++) { if(cnt_val*lun >= 8*N) { int cnt_id = 8 - cnt_val; vector<int> sir; for(int i=0;i<lun;i++) { for(int j=0;j<cnt_val;j++) { if((1<<j)&X[i]) sir.push_back(1); else sir.push_back(0); } } for(int i=0;i<N;i++) { int val=0; for(int j=0;j<8;j++) if(sir[i*8+j]) val += (1<<j); output(val); } return; } } } else { assert(0); } }
#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...