Submission #999192

#TimeUsernameProblemLanguageResultExecution timeMemory
999192pakapuCombo (IOI18_combo)C++17
0 / 100
0 ms600 KiB
#include <vector> #include <iostream> #include <cassert> #include <algorithm> #include "combo.h" std::string get_first_char() { std::vector<std::string> available_chars = {"A", "B", "X", "Y"}; for (int i = 0; i < 4; i++) { if (press(available_chars[i]) == 1) { return available_chars[i]; } } assert(false); return "-"; } std::string guess_sequence(int N) { std::vector<std::string> available_chars = {"A", "B", "X", "Y"}; std::string first_char = get_first_char(); available_chars.erase(find(available_chars.begin(), available_chars.end(), first_char)); // std::cout << "Available characters: "; // for (auto c : available_chars) { // std::cout << c << " "; // } // std::cout << '\n'; std::string ans = first_char; for (int i = 1; i < N - 1; i++) { std::string next = ""; next += ans + available_chars[0]; next += ans + available_chars[1] + available_chars[0]; next += ans + available_chars[1] + available_chars[1]; next += ans + available_chars[1] + available_chars[2]; int coins = press(next); switch (coins - ans.size()) { case 0: ans += available_chars[2]; break; case 1: ans += available_chars[0]; break; case 2: ans += available_chars[1]; break; default: assert(false); } } int final_coins1 = press(ans + available_chars[0]); int final_coins2 = press(ans + available_chars[1]); if (final_coins1 == N) { return ans + available_chars[0]; } else if (final_coins2 == N) { return ans + available_chars[1]; } else { assert(false); assert(press(ans + available_chars[2]) == N); return ans + available_chars[2]; } assert(false); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...