Submission #1172499

#TimeUsernameProblemLanguageResultExecution timeMemory
1172499versesrevCombo (IOI18_combo)C++20
100 / 100
8 ms508 KiB
// 17:31 #include <string> #include <vector> #include <functional> #include <cassert> #include "combo.h" std::string guess_sequence (int N) { std::vector<char> cs{'A', 'B', 'X', 'Y'}; char start = std::invoke([&]{ int v1 = press("AB"); if (v1 >= 1) { if (press("A") == 1) return 'A'; else return 'B'; } else { if (press("X") == 1) return 'X'; else return 'Y'; } }); std::erase(cs, start); std::string ans; ans += start; if (N == 1) { return ans; } for (int i = 1; i < N - 1; ++i) { std::string query = ans + cs[0]; query += ans + cs[1] + cs[0]; query += ans + cs[1] + cs[1]; query += ans + cs[1] + cs[2]; int val = press(query); if (val == ans.length()) { ans += cs[2]; } else if (val == ans.length() + 1) { ans += cs[0]; } else { assert(val == ans.length() + 2); ans += cs[1]; } } assert(ans.length() == N - 1); std::string query = ans + cs[0] + ans + cs[1]; if (press(query) == N - 1) { ans += cs[2]; } else if(press(ans + cs[0]) == N) { ans += cs[0]; } else { ans += cs[1]; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...