Submission #1227514

#TimeUsernameProblemLanguageResultExecution timeMemory
1227514walizamaneeMechanical Doll (IOI18_doll)C++20
37 / 100
399 ms15008 KiB

#include<bits/stdc++.h>
#include "doll.h"
using namespace std;
int trie[400001][2] , boss[400001] , here , n , lol;
vector<int> a;

void gettrie( int me , int pw ) {
  int ekhane = 1;

  for( int z = 0; z < pw ; z++ ) {
     if( ((me) & ( 1 << z )) >= 1 ) {
        if( trie[ekhane][1] == 1e7 ) {
          trie[ekhane][1] = (here);
          boss[here] = ekhane;
          here++;
        }
        ekhane = trie[ekhane][1];
     }
     else{
        if( trie[ekhane][0] == 1e7 ) {
          trie[ekhane][0] = (here);
          boss[here] = ekhane;
          here++;
        }
        ekhane = trie[ekhane][0];
     }
  }
  
        lol = boss[ekhane];
        here--;
        if( trie[lol][0] == ekhane ) trie[lol][0] =  (-1) * (a[me]);
        else trie[lol][1] =  (-1) * (a[me]);

}

void create_circuit(int M, vector<int> A) {
  a = A;
  //a.push_back(0);
  int two = 0;
  n = a.size();
  for( int z = 0; z <= 2 * n; z++ ) {
    trie[z][0] = 1e7;
    trie[z][1] = 1e7;
  }
  here = 2;
  while( (1 << two) <= n ) two++;
  cerr << (1 << two) << " " << n << " lol" << "\n";
  for( int z = 1; z < ((1 << two) - n); z++ ) a.push_back(-1);
  a.push_back(0);
  n = (int)a.size();
  
  for( int z = 0; z < n; z++ ) {
    cerr << a[z] << " ";
     gettrie(z , two);
  }
  vector<int> c(M + 1);
   vector<int> x(here - 1), y(here - 1);
  for( int z = 0; z <= M; z++ ) c[z] = -1;
  cerr << here << " " << n << "\n";
  for( int z = 1; z < here; z++ ) {
     // if( trie[z][0] < -1e8 ) {
         x[z - 1] = (trie[z][0] * (-1));
        y[z - 1] = (trie[z][1] * (-1));
     // }
   } 
  answer(c, x, y);
}
#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...