This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "encoder.h"
#include "encoderlib.h"
#include <bits/stdc++.h>
using namespace std;
void encode(int n, int M[]) {
if(n == 64) {
for(int i = 0; i < n; i++) {
int cur = (i << 2);
for(int j = 0; j < 8; j++) {
send(cur | (M[i] >> 6));
}
for(int j = 0; j < 4; j++) {
send(cur | ((M[i] >> 4) & 3));
}
for(int j = 0; j < 2; j++) {
send(cur | ((M[i] >> 2) & 3));
}
send(cur | (M[i] & 3));
}
return ;
}
for(int i = 0; i < n; i++) {
int cur = (i << 3);
for(int j = 0; j < 4; j++) {
send(cur | (M[i] >> 5));
}
for(int j = 0; j < 2; j++) {
send(cur | ((M[i] >> 2) & ((1 << 3) - 1)));
}
send(cur | (M[i] & ((1 << 2) - 1)));
}
}
#include "decoder.h"
#include "decoderlib.h"
#include <bits/stdc++.h>
using namespace std;
void decode(int n, int l, int X[]) {
vector < vector <int> > pos(l);
if(n == 64) {
for(int i = 0; i < l; i++) {
pos[X[i] >> 2].push_back(X[i] & 3);
}
for(int i = 0; i < n; i++) {
map <int, int> mp;
for(auto it : pos[i]) {
mp[it]++;
}
int cur = 0;
for(int j = 3; j >= 0; j--) {
for(auto &it : mp) {
if(it.second >= (1 << j)) {
cur = (cur << (2 * j)) + it.first;
it.second -= (1 << j);
break;
}
}
}
output(cur);
}
return ;
}
for(int i = 0; i < l; i++) {
pos[X[i] >> 3].push_back(X[i] & ((1 << 3) - 1));
}
for(int i = 0; i < n; i++) {
map <int, int> mp;
for(auto it : pos[i]) {
mp[it]++;
}
int cur = 0;
for(auto &it : mp) {
if(it.second >= 4) {
cur = (cur << 3) + it.first;
it.second -= 4;
break;
}
}
for(auto &it : mp) {
if(it.second >= 2) {
cur = (cur << 3) + it.first;
it.second -= 2;
break;
}
}
for(auto it : mp) {
if(it.second) {
cur = (cur << 2) + it.first;
break;
}
}
output(cur);
}
}
# | 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... |