Submission #1043781

#TimeUsernameProblemLanguageResultExecution timeMemory
1043781SylvanaGCombo (IOI18_combo)C++14
100 / 100
19 ms1356 KiB
#include "combo.h" #include <bits/stdc++.h> using namespace std; string cadena_actual = ""; vector<char>lista = {'A', 'B', 'X', 'Y'}; string crear_string(){ string devolver_str = ""; auto default1 = lista[2]; auto default2 = lista[1]; for (auto e: lista){ devolver_str+=cadena_actual; devolver_str+=default1; devolver_str+=e; } devolver_str+=cadena_actual; devolver_str+=default2; return devolver_str; } string guess_sequence(int N) { /* // CREAR SEPARADOR FORMA MALA int var = lista[0]; // A for (int i = 1; i<4; i++){ string x = ""; x+=lista[i]; if (press(x)==1){ var = lista[i]; lista.erase(lista.begin()+i); break; } if(i==3){ lista.erase(lista.begin()+0); } } cadena_actual+=var; */ // CREAR SEPARADOR FORMA BUENA int mn = 0; int mx = 3; int mid = (mn+mx)/2; int var; while (mn<mx){ mid = (mn+mx)/2; string norisitas = ""; for (int i = mn; i<=mid; i++){ norisitas+=lista[i]; } if (press(norisitas)>=1){ mx = mid; } else{ mn = mid+1; } } var = lista[mn]; // si pongo mx no afecta porque quedaron en lo mismo lista.erase(lista.begin()+mn); cadena_actual+=var; // if press de lisrta de 0 a mid es >=1, elimino de mid a max // else elimino de mid a 0 // if press de primer elemento d elo que tengo es 1, bien sino paila // CREAR STRING if (N>1){ for (int i = 0; i<(N-2); i++){ var = press(crear_string()); int coso = cadena_actual.size(); cadena_actual+=lista[var-coso]; // CONSEJO: NO RESTAR VAINAS.SIZE } string h = cadena_actual; h+=lista[0]; if (press(h)==N){ cadena_actual+=lista[0]; } else{ h.pop_back(); h+=lista[1]; if (press(h)==N){ cadena_actual+=lista[1]; } else{ h.pop_back(); cadena_actual+=lista[2]; } } } return cadena_actual; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...