#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 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... |