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[]) {
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);
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... |