제출 #1193370

#제출 시각아이디문제언어결과실행 시간메모리
1193370OrmlisCombo (IOI18_combo)C++20
100 / 100
7 ms492 KiB
#include "combo.h"
#include <iostream>

std::string guess_sequence(int N) {
    std::string letters = "ABXY";
    if (N == 1) {
        for (int i = 0; i < 4; ++i) {
            if (i == 3 || press(letters.substr(i, 1)) == 1) {
                return letters.substr(i, 1);
            }
        }
    }
    std::string result;
    if (press("AB")) {
        if (press("A")) {
            result += "A";
        } else {
            result += "B";
        }
    } else {
        if (press("X")) {
            result += "X";
        } else {
            result += "Y";
        }
    }
    letters.erase(letters.find(result[0]), 1);
    for (int i = 1; i + 1 < N; ++i) {
        std::string query;
        for (int c = 0; c < 3; ++c) {
            query += result;
            query += letters[2];
            query += letters[c];
        }
        query += result;
        query += letters[1];
        result += letters[press(query) - i];
    }
    if (press(result + letters[0]) == N) {
        result += letters[0];
    } else if (press(result + letters[1]) == N) {
        result += letters[1];
    } else {
        result += letters[2];
    }

    return result;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...