| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1364874 | takoshanava | Parrots (IOI11_parrots) | C++20 | 0 ms | 0 KiB |
#include "encoder.h"
#include "encoderlib.h"
#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fs first
#define sc second
using namespace std;
vector<array<int, 4>> vec;
bool done = 0;
void gen(){
if(done) return;
done = 1;
for(int a = 0; a <= 7; a++){
for(int b = 0; b <= 7; b++){
for(int c = 0; c <= 7; c++){
for(int d = 0; d <= 7; d++){
if(a + b + c + d <= 7) vec.pb({a, b, c, d});
}
}
}
}
}
void encode(int n, int a[]){
gen();
for(int i = 0; i < n; i++){
int val = 0;
int p = 4;
int x = i;
for(int j = 0; j <= 5; j++){
if(x % 2 == 1) val += p;
p *= 2;
x /= 2;
}
int id = a[i];
int aa = vec[id][0];
int bb = vec[id][1];
int cc = vec[id][2];
int dd = vec[id][3];
for(int j = 0; j < aa; j++) send(val + 0);
for(int j = 0; j < bb; j++) send(val + 1);
for(int j = 0; j < cc; j++) send(val + 2);
for(int j = 0; j < dd; j++) send(val + 3);
}
}
#include "decoder.h"
#include "decoderlib.h"
#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fs first
#define sc second
using namespace std;
vector<array<int, 4>> vec;
int rev[8][8][8][8];
bool done = 0;
void gen(){
if(done) return;
done = 1;
for(int a = 0; a <= 7; a++){
for(int b = 0; b <= 7; b++){
for(int c = 0; c <= 7; c++){
for(int d = 0; d <= 7; d++){
if(a + b + c + d <= 7){
rev[a][b][c][d] = vec.size();
vec.pb({a, b, c, d});
}
}
}
}
}
}
void decode(int n, int l, int a[]){
gen();
vector<array<int, 4>> cnt(n, {0, 0, 0, 0});
for(int i = 0; i < l; i++){
int x = a[i] / 4;
int y = a[i] % 4;
cnt[x][y]++;
}
for(int i = 0; i < n; i++){
int aa = cnt[i][0];
int bb = cnt[i][1];
int cc = cnt[i][2];
int dd = cnt[i][3];
output(rev[aa][bb][cc][dd]);
}
}