#include "encoder.h"
#include "encoderlib.h"
#include <bits/stdc++.h>
using namespace std;
void encode(int N, int m[]) {
int sup = 64 - 1;
int enviar = 0;
vector<pair<int, int>> ax = {
{-1, -1},
{0, 3},
{4, 12},
{13, 29},
{30, 54},
{55, 90},
{91, 139},
{140, 203},
{204, 285}
};
for (int t1 = 0; t1 < N; t1 ++) {
int mes = sup;
mes <<= 2;
for (int t2 = 1; t2 <= 8; t2 ++) {
if (ax[t2].first <= m[t1] && m[t1] <= ax[t2].second) {
int ax2 = m[t1] - ax[t2].first;
int d1 = ax2 % (t2 + 1);
int d2 = (ax2 - d1) / (t2 + 1);
for (int t3 = 0; t3 < t2; t3 ++) {
send(mes + (d2? 2:0) + (d1? 1:0));
d1 = max(0, d1 - 1);
d2 = max(0, d2 - 1);
}
break ;
}
}
//if (m[t1] <= 3) {
// send(mes + m[t1]);
//}
sup --;
}
return ;
}
#include "decoder.h"
#include "decoderlib.h"
#include <bits/stdc++.h>
using namespace std;
void decode(int N, int L, int X[]) {
vector<pair<int, int>> ax = {
{-1, -1},
{0, 3},
{4, 12},
{13, 29},
{30, 54},
{55, 90},
{91, 139},
{140, 203},
{204, 285}
};
vector<int> ns(L);
for (int t1 = 0; t1 < L; t1 ++) {
ns[t1] = X[t1];
}
sort(ns.rbegin(), ns.rend());
int sup = 64 - 1, ind = 0;
for (int t1 = 0; t1 < N; t1 ++) {
int d1 = 0, d2 = 0, base = 1;
while (ind < L && ns[ind] / 4 == sup) {
if (ns[ind] % 4 == 3) {
d1 ++;
d2 ++;
} else if (ns[ind] % 4 == 2) {
d2 ++;
} else if (ns[ind] % 4 == 1) {
d1 ++;
} else {
}
base ++;
ind ++;
}
sup --;
output(ax[base - 1].first + d2*base + d1);
}
return ;
}
# | 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... |