Submission #1359370

#TimeUsernameProblemLanguageResultExecution timeMemory
1359370nathlol2Parrots (IOI11_parrots)C++20
88 / 100
4 ms836 KiB
#include "encoder.h"
#include "encoderlib.h"
#include <iostream>

void encode(int N, int M[]){
  if(N <= 32){
    for(int i = 0;i<N;i++){
      for(int bit = 0;bit<8;bit++){
        if(M[i] & (1 << bit)) send(i * 8 + bit);
      }
    }
  }else{
    int cnt = 0;
    for(int i = 0;i<N;i++){
      int a = M[i] % 4, b = (M[i] / 4) % 4, c = (M[i] / 16) % 4, d = (M[i] / 64) % 4;
      for(int j = 0;j<a;j++) send(i * 4);
      for(int j = 0;j<b;j++) send(i * 4 + 1);
      for(int j = 0;j<c;j++) send(i * 4 + 2);
      for(int j = 0;j<d;j++) send(i * 4 + 3);
    }
  }
}
#include "decoder.h"
#include "decoderlib.h"

void decode(int N, int L, int X[]){
  int ans[N];
  for(int i = 0;i<N;i++) ans[i] = 0;
  if(N <= 32){
    for(int i = 0;i<L;i++){
      int id = X[i] / 8, c = X[i] % 8;
      ans[id] += (1 << c);
    }
    for(int i = 0;i<N;i++) output(ans[i]);
  }else{
    for(int i = 0;i<L;i++){
      int id = X[i] / 4, c = X[i] % 4;
      int cc = 1;
      for(int j = 0;j<c;j++) cc *= 4;
      ans[id] += cc;
    }
    for(int i = 0;i<N;i++) output(ans[i]);
  }
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...