Submission #1351828

#TimeUsernameProblemLanguageResultExecution timeMemory
1351828Braabebo10Parrots (IOI11_parrots)C++20
81 / 100
2 ms836 KiB
#include "encoder.h"
#include "encoderlib.h"
#include <bits/stdc++.h>
using namespace std;
#define ll int
ll PW(ll a, ll p){
    ll res = 1;
    for (ll i = 0; i < p; i++)res *= a;
    return res;
}
void encode(int N, int M[]){
    // int i;
    // map<int, int>mp;
    // for(i=0; i<N; i++)
    //   mp[M[i]]++;
    // vector<array<int, 2>>v;
    // for(auto [x, frq]: mp)
    //   v.push_back({frq, x});
    //   sort(v.begin(), v.end());
    // for(auto [frq, x]: v)
    //   send(x);
    if (N <= 32){
      ll valId[N][9];
    ll id = 0;
    for (ll i = 0; i < N; i++){
        for (ll j = 0; j < 8; j++)
          valId[i][j] = id++;
    }
    // cout << "Message" << endl;
    for (ll i = 0; i < N; i++){
        for (ll j = 0; j < 8; j++)
          for (ll k = 0; k < (M[i] >> j & 1); k++){
            // cout << valId[i][j] << ' ';
            // cout << endl;
            send(valId[i][j]);
          }
    }
    return ;
    }
    ll valId[N][9];
    ll id = 0;
    for (ll i = 0; i < N; i++){
        for (ll j = 0; j < 6; j++)
          valId[i][j] = id++;
    }
    // cout << "Message" << endl;
    for (ll i = 0; i < N; i++){
        for (ll j = 0; j < 6; j++){
          ll V = PW(3, j);
          for (ll k = 0; k < ((M[i] / V) % 3); k++){
            // cout << valId[i][j] << ' ';
            // cout << endl;
            send(valId[i][j]);
          }
        }
    }
}
#include "decoder.h"
#include "decoderlib.h"
#include <bits/stdc++.h>
using namespace std;
#define ll int
ll PWW(ll a, ll p){
    ll res = 1;
    for (ll i = 0; i < p; i++)res *= a;
    return res;
}
void decode(int N, int L, int X[])
{
    // int i, b;
    // for(i=0; i<L; i++) {
    //   b = X[i];
    //   for(int j = 0; j <= i; j++)
    //   output(b);
    // }
    if (N <= 32){
      ll valId[N][9], frq[300]{};
    ll id = 0;
    for (ll i = 0; i < N; i++){
        for (ll j = 0; j < 8; j++)
          valId[i][j] = id++;
    }
    for (ll i = 0; i < L; i++)frq[X[i]]++;
    // cout << "freq" << endl;
    // for (ll i = 0; i < 24; i++)
    //   cout << i << " = " << frq[i] << endl;
    for (ll i = 0; i < N; i++){
        ll val = 0;
        for (ll j = 0; j < 8; j++)
          if(frq[valId[i][j]] == 1)val |= (1 << j);
        // cout << val << ' ';
        // cout << endl;
        output(val);
    }
    return ;
    }
    ll valId[N][9], frq[300]{};
    ll id = 0;
    for (ll i = 0; i < N; i++){
        for (ll j = 0; j < 6; j++)
          valId[i][j] = id++;
    }
    for (ll i = 0; i < L; i++)frq[X[i]]++;
    // cout << "freq" << endl;
    // for (ll i = 0; i < 24; i++)
    //   cout << i << " = " << frq[i] << endl;
    for (ll i = 0; i < N; i++){
        ll val = 0;
        for (ll j = 0; j < 6; j++){
          ll V = PWW(3, j);
          val += V * frq[valId[i][j]];
        }
        // cout << val << ' ';
        // cout << endl;
        output(val);
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...