| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1364873 | gvancak | Parrots (IOI11_parrots) | C++20 | 0 ms | 0 KiB |
#include "encoder.h"
#include "encoderlib.h"
#include <bits/stdc++.h>
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define ll long long
using namespace std;
void sheqmna(){
axali.clear();
for (int i=0; i<256; i++) axali.pb(i);
random_shuffle(axali.begin(), axali.end());
}
vector <ll> v[340];
ll cnt,cnt1;
void generate(int p){
cnt=0; cnt1=0; if (axali.size()==0) sheqmna();
for (int i=0; i<=p; i++){
for (int j=0; j<=p; j++){
for (int k=0; k<=p; k++){
for (int o=0;o<=p; o++){
if (i+j+k+o<=p){
if (i+j+k+o==7 && cnt1>45)continue;
if (i+j+k+o==7) cnt1++;
// cout<<axali[cnt]<<endl;
v[axali[cnt]].pb(i); v[axali[cnt]].pb(j); v[axali[cnt]].pb(k); v[axali[cnt]].pb(o); cnt++;
}
}
}
}
}
}
void encode(int N, int M[])
{
generate(7);
// cout<<v[10].size()<<endl;
ll n=N;
ll pw[10];
pw[0]=1;
ll x=0;
for (int i=1; i<=8; i++) pw[i]=2*pw[i-1];
vector <ll> v2[n+5];
for (int i=0; i<n; i++){
x=0;
for (int j=0; j<=5; j++){
if ((i&((1<<j)))==0) continue;
x+=pw[j+2];
}
for (int j=1; j<=7; j++) v2[i].pb(x);
}
ll st[10],ind,k,num[10];
for (int i=0; i<n; i++){
// cout<<M[i]<<endl;
// cout<<v[M[i]].size()<<endl;
for (int j=0; j<256; j++){
if (axali[j]==M[i]){
M[i]=j; break;
}
}
st[0]=v[M[i]][0]; st[1]=st[0]+v[M[i]][1];
st[2]=st[1]+v[M[i]][2]; st[3]=st[2]+v[M[i]][3];
ind=0;
k=0;
// cout<<"STTT "<<st[0]<<st[1]<<st[2]<<st[3]<<endl;
for (int j=0; j<7; j++){
// cout<<"before: "<<v2[i][j]<<endl;
while (ind<=3 && j>=st[ind]) ind++;
if (ind>3) {k++; continue; }
v2[i][j]+=ind;
// cout<<"after: "<<v2[i][j]<<endl;
}
while (k--) v2[i].pop_back();
}
for (int i=0; i<n; i++){
for (int j=0; j<v2[i].size(); j++){
send(v2[i][j]);
}
}
}#include "decoder.h"
#include "decoderlib.h"
#include <bits/stdc++.h>
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define ll long long
using namespace std;
void sheqmna(){
axali.clear();
for (int i=0; i<256; i++) axali.pb(i);
random_shuffle(axali.begin(), axali.end());
}
vector <ll> v[340];
ll cnt,cnt1;
void generate(int p){
cnt=0; cnt1=0; if (axali.size()==0) sheqmna();
for (int i=0; i<=p; i++){
for (int j=0; j<=p; j++){
for (int k=0; k<=p; k++){
for (int o=0;o<=p; o++){
if (i+j+k+o<=p){
if (i+j+k+o==7 && cnt1>45)continue;
if (i+j+k+o==7) cnt1++;
// cout<<axali[cnt]<<endl;
v[axali[cnt]].pb(i); v[axali[cnt]].pb(j); v[axali[cnt]].pb(k); v[axali[cnt]].pb(o); cnt++;
}
}
}
}
}
}
void decode(int n, int l, int a[])
{
generate(7);
int N=n;
vector <ll> v1[N+1];
ll x=0,y;
for (int i=0; i<l; i++){
x=0;
for (int j=2; j<=7; j++){
if ((a[i]&((1<<j)))==0) continue;
x+=(1<<(j-2));
}
y=0;
if ((a[i]&2)==2) y+=2; if ((a[i]&1)==1) y+=1;
// cout<<x<<" "<<y<<endl;
v1[x].pb(y);
}
for (int i=0; i<n; i++) sort(v1[i].begin(),v1[i].end());
ll raod[10],vin;
for (int me=0; me<n; me++){
raod[0]=raod[1]=raod[2]=raod[3]=0;
for (int shen=0; shen<v1[me].size(); shen++){
raod[v1[me][shen]]++;
}
cnt=0; cnt1=0;
for (int i=0; i<=7; i++){
for (int j=0; j<=7; j++){
for (int k=0; k<=7; k++){
for (int o=0;o<=7; o++){
if (i+j+k+o>7) continue;
if (i+j+k+o==7 && cnt1>45)continue;
if (i+j+k+o==7) cnt1++;
if (i==raod[0] && j==raod[1] && k==raod[2] && o==raod[3]){
vin=axali[cnt]; break;
}cnt++;
}
}
}
}
// cout<<vin<<endl;
output(vin);
}
}