#include "encoder.h"
#include "encoderlib.h"
#include<bits/stdc++.h>
using namespace std;
int timer = 0;
map<int, vector<int>> m;
vector<int> x = {0};
void dfs(){
m[timer] = x;
timer++;
if((int)x.size() == 7){
return;
}
int last = x[(int)x.size()-1];
for(int i = last; i <= 3; ++i){
x.push_back(i);
dfs();
x.pop_back();
}
}
void encode(int N, int M[])
{
int n = N;
timer = 0;
x.clear();
x = {0};
dfs();
x.clear();
x = {1};
dfs();
x.clear();
x = {2};
dfs();
x.clear();
x = {3};
dfs();
x.clear();
timer = 0;
vector<vector<int>> vec(n);
for(int i = 0; i < n; ++i){
vec[i] = m[M[i]];
}
for(int i = 0; i < n; ++i){
for(auto e:vec[i]){
int num = i;
if(e & 1){
num += 64;
}
if(e & 2){
num += 128;
}
send(num);
}
}
}
#include "decoder.h"
#include "decoderlib.h"
#include<bits/stdc++.h>
using namespace std;
int timer = 0;
map<vector<int>, int> m;
vector<int> x = {0};
void dfs(){
m[x] = timer;
timer++;
if((int)x.size() == 7){
return;
}
int last = x[(int)x.size()-1];
for(int i = last; i <= 3; ++i){
x.push_back(i);
dfs();
x.pop_back();
}
}
void decode(int N, int L, int X[])
{
int n = N;
timer = 0;
x.clear();
x = {0};
dfs();
x.clear();
x = {1};
dfs();
x.clear();
x = {2};
dfs();
x.clear();
x = {3};
dfs();
x.clear();
timer = 0;
vector<vector<int>> vec(n);
for(int i = 0; i < L; ++i){
int pos = 0;
for(int j = 0; j < 6; ++j){
if(X[i] & (1 << j)){
pos += (1 << j);
}
}
int num = 0;
if(X[i] & 64){
num++;
}
if(X[i] & 128){
num+=2;
}
vec[pos].push_back(num);
}
for(auto e:vec){
int ans = m[e];
output(ans);
}
}
# | 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... |