제출 #999214

#제출 시각아이디문제언어결과실행 시간메모리
999214pakapu콤보 (IOI18_combo)C++17
94 / 100
24 ms1272 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'; assert(available_chars.size() == 3); 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) - i; assert(coins >= 0 && coins <= 2); if (coins == 0) { ans += available_chars[2]; } else if (coins == 1) { ans += available_chars[0]; } else { ans += available_chars[1]; } } if ((int)ans.size() == N) { return ans; } int final_coins1 = press(ans + available_chars[0]); int final_coins2 = press(ans + available_chars[1]); if (final_coins1 == N) { ans += available_chars[0]; } else if (final_coins2 == N) { ans += available_chars[1]; } else { ans += available_chars[2]; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...