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 <bits/stdc++.h>
#include "encoder.h"
#include "encoderlib.h"
using namespace std;
map<vector<int>,int> mp;
map<int,vector<int>> rev;
vector<int> vec; int nxt;
void rec(int n){
if(n==5){
if(vec.size()!=5) return;
mp[vec]=nxt++;
rev[nxt-1]=vec;
}
else{
if(vec.size()>5) return;
rec(n+1);
for(int i=1;i<=5;i++){
vec.push_back(n);
rec(n+1);
}
for(int i=0;i<5;i++)
vec.pop_back();
}
}
void encode(int N,int *M){
mp.clear(); rev.clear(); nxt = 0;
rec(0);
for(int i=0;i<N;i++){
vector<int> w = rev[M[i]];
for(auto v : w){
if(v==4) continue;
send(i*4+v);
}
}
}
#include <bits/stdc++.h>
#include "decoder.h"
#include "decoderlib.h"
using namespace std;
map<vector<int>,int> mp;
map<int,vector<int>> rev;
vector<int> vec; int nxt;
void rec(int n){
if(n==5){
if(vec.size()!=5) return;
mp[vec]=nxt++;
rev[nxt-1]=vec;
}
else{
if(vec.size()>5) return;
rec(n+1);
for(int i=1;i<=5;i++){
vec.push_back(n);
rec(n+1);
}
for(int i=0;i<5;i++)
vec.pop_back();
}
}
vector<int> heh[200];
void decode(int N,int L,int *X){
mp.clear(); rev.clear(); nxt = 0;
rec(0);
for(int i=0;i<200;i++) heh[i].clear();
for(int i=0;i<L;i++){
int idx = (X[i]>>2);
heh[idx].push_back(X[i]&3);
}
for(int i=0;i<N;i++){
while(heh[i].size()<5)
heh[i].push_back(4);
sort(heh[i].begin(),heh[i].end());
}
for(int i=0;i<N;i++){
output(mp[heh[i]]);
}
}
# | 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... |