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;
int mapa2[1000];
map<int,int> mapa;
int broj = 0;
void rec(int posledno, int n, int s,int depth){
if(depth==7)
{
mapa[s]=broj;
mapa2[broj]=s;
//cout<<s<<" "<<broj<<endl;
broj++;
return;
}
for(int i =posledno;i<n;i++)
{
rec(i,n,s*10+i,depth+1);
}
}
void encode(int n, int a[])
{
broj = 0;
rec(0,5,0,0);
int start_from = 0;
for(int i =0;i<n;i++)
{
int x = mapa2[a[i]];
while (x>0)
{
send((x%10)-1+start_from);
x/=10;
}
start_from+=4;
}
}
#include <bits/stdc++.h>
#include "decoder.h"
#include "decoderlib.h"
using namespace std;
int mapa2[1000];
map<int,int> mapa;
int broj = 0;
void rec(int posledno, int n, int s,int depth){
if(depth==7)
{
mapa[s]=broj;
mapa2[broj]=s;
//cout<<s<<" "<<broj<<endl;
broj++;
return;
}
for(int i =posledno;i<n;i++)
{
rec(i,n,s*10+i,depth+1);
}
}
void decode(int n,int howmany2,int a[]){
broj = 0;
rec(0,5,0,0);
sort(a,a+howmany2);
int start_from = 0;
int current = 0;
for(int j =0;j<n;j++)
{
start_from=j*4;
current = 0;
for(int i = 0;i<howmany2;i++)
if (a[i]<start_from+4 && a[i]>=start_from)
current = (current*10)+a[i]-start_from+1;
output(mapa[current]);
}
}
# | 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... |