Submission #1234822

#TimeUsernameProblemLanguageResultExecution timeMemory
1234822guanexParrots (IOI11_parrots)C++20
17 / 100
1 ms840 KiB
#include "encoder.h"
#include "encoderlib.h"

#include<bits/stdc++.h>
using namespace std;

int timer = 0;
map<int, vector<int>> m;
vector<int> x = {0};

void dfs(){
  m[timer] = x;
  timer++;
  if((int)x.size() == 7){
    return;
  }
  int last = x[(int)x.size()-1];
  for(int i = last; i <= 3; ++i){
    x.push_back(i);
    dfs();
    x.pop_back();
  }
}

void encode(int N, int M[])
{
  int n = N;
  timer = 0;
  x.clear();
  x = {0};
  dfs();
  x.clear();
  x = {1};
  dfs();
  x.clear();
  x = {2};
  dfs();
  x.clear();
  x = {3};
  dfs();
  x.clear();
  timer = 0;
  vector<vector<int>> vec(n);
  for(int i = 0; i < n; ++i){
    vec[i] = m[M[i]];
  }
  for(int i = 0; i < n; ++i){
    for(auto e:vec[i]){
      int num = i;
      if(e & 1){
        num += 64;
      }
      if(e & 2){
        num += 128;
      }
      send(num);
    }
  }
}
#include "decoder.h"
#include "decoderlib.h"

#include<bits/stdc++.h>
using namespace std;

int timer = 0;
map<vector<int>, int> m;
vector<int> x = {0};

void dfs(){
  m[x] = timer;
  timer++;
  if((int)x.size() == 7){
    return;
  }
  int last = x[(int)x.size()-1];
  for(int i = last; i <= 3; ++i){
    x.push_back(i);
    dfs();
    x.pop_back();
  }
}


void decode(int N, int L, int X[])
{
  int n = N;
  timer = 0;
  x.clear();
  x = {0};
  dfs();
  x.clear();
  x = {1};
  dfs();
  x.clear();
  x = {2};
  dfs();
  x.clear();
  x = {3};
  dfs();
  x.clear();
  timer = 0;
  vector<vector<int>> vec(n);
  for(int i = 0; i < L; ++i){
    int pos = 0;
    for(int j = 0; j < 6; ++j){
      if(X[i] & (1 << j)){
        pos += (1 << j);
      }
    }
    int num = 0;
    if(X[i] & 64){
      num++;
    }
    if(X[i] & 128){
      num+=2;
    }
    vec[pos].push_back(num);
  }
  for(auto e:vec){
    int ans = m[e];
    output(ans);
  }
}
#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...