Submission #281661

#TimeUsernameProblemLanguageResultExecution timeMemory
281661MrDominoCombo (IOI18_combo)C++14
30 / 100
47 ms584 KiB
#include <bits/stdc++.h> #include "combo.h" using namespace std; string del(string s, char ch) { string t; for (auto &x : s) { if (x != ch) { t += x; } } return t; } mt19937 rng((long long) (new char)); string mult(char ch, int x) { string s; for (int i = 1; i <= x; i++) { s += ch; } return s; } string guess_sequence(int n) { string sol; string posi = "ABXY"; bool found = 0; for (int j = 0; j < 3; j++) { if (press(sol + posi[j]) == 1) { found = 1; sol += posi[j]; break; } } if (found == 0) { sol += posi[3]; } posi = del(posi, sol[0]); while ((int) sol.size() + 1 <= n) { shuffle(posi.begin(), posi.end(), rng); char a = posi[0]; char b = posi[1]; char c = posi[2]; int ret = press(sol + mult(a, n - (int) sol.size()) + sol + b); if (ret == (int) sol.size()) { sol += c; continue; } if (ret > (int) sol.size() + 1) { sol = sol + mult(a, ret - (int) sol.size()); continue; } if (ret == (int) sol.size() + 1) { if ((int) sol.size() == n - 1) { ret = press(sol + a); if (ret == n) { sol += a; continue; } else { sol += b; continue; } } /// + ab /// + ac /// + b ret = press(sol + a + b); if (ret == (int) sol.size() + 2) { sol += a; sol += b; continue; } if (ret == (int) sol.size() + 1) { sol += a; sol += c; continue; } sol += b; continue; } } return sol; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...