Submission #1331691

#TimeUsernameProblemLanguageResultExecution timeMemory
1331691TaxiradioMechanical Doll (IOI18_doll)C++20
78.40 / 100
122 ms11152 KiB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;

int t = -1;

vector<int> ans1 , ans2;

int create(vector<int> a){
  vector<int> b , c;
  bool w = 1;
  for(int i = 0; i < int(a.size()); i++){
    if(i != 0 && a[i] != a[i-1])w = 0;
    if(i%2 == 0){
      b.push_back(a[i]);
    }else{
      c.push_back(a[i]);
    }
  }
  if(w)return a[0];
  ans1.push_back(0);
  ans2.push_back(0);
  int o = -t-1 , u = t;
  t--;
  int e = create(b), f = create(c);
  ans1[o] = e;
  ans2[o] = f;
  return u;
}

vector<int> suf(vector<int> a){
  if(a.size() == 1)return a;
  vector<int> b , c;
  for(int i = 0; i < int(a.size())/2; i++)b.push_back(a[i]);
  for(int i = int(a.size())/2; i < int(a.size()); i++)c.push_back(a[i]);
  b = suf(b);
  c = suf(c);
  vector<int> d;
  for(int i = 0; i < int(a.size())/2; i++){
    d.push_back(b[i]);
    d.push_back(c[i]);
  }
  return d;
}

void create_circuit(int M, std::vector<int> A) {
  int w = 1;
  vector<int> B(A.size() , 0);
  while(w < int(B.size())+1)w*=2;
  while(int(B.size())+1 < w)B.push_back(-1);
  B.push_back(0);
  B = suf(B);
  int j = 0;
  for(int i = 0; i < int(B.size());i++){
    if(B[i] == 0){
      B[i] = A[j];
      j++;
    }
  }
  create(B);
  vector<int> c(M+1 , -1);
  answer(c , ans1 , ans2);
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...