Submission #1279279

#TimeUsernameProblemLanguageResultExecution timeMemory
1279279darele콤보 (IOI18_combo)C++20
100 / 100
9 ms548 KiB
#include "combo.h"
#include <bits/stdc++.h>

using namespace std;

string guess_sequence(int N) {
    string s = "";
    string p = "";
    int coins, curCoins;
    curCoins = 0;
    p = "AB";
    coins = press(p);
    if (coins - curCoins >= 1) {
        if (coins - curCoins > 1) {
            s += "AB";
        } else {
            p = "A";
            coins = press(p);
            if (coins - curCoins == 1) {
                s += "A";
            } else {
                s += "B";
            }
        }
    } else {
        p = "X";
        coins = press(p);
        if (coins - curCoins == 1) {
            s += "X";
        } else {
            s += "Y";
        }
    }

    if (s.size() == N) return s;
    vector <string> valid;
    valid.reserve(3);
    if (s[0] != 'A') valid.push_back("A");
    if (s[0] != 'B') valid.push_back("B");
    if (s[0] != 'X') valid.push_back("X");
    if (s[0] != 'Y') valid.push_back("Y");
    while((int)s.size() < N - 1) {
        p = s + valid[0] + valid[0] + s + valid[0] + valid[1] + s + valid[0] + valid[2] + s + valid[1];
        coins = press(p);
        curCoins = s.size();
        if (coins - curCoins == 1) {
            s += valid[1];
        } else if (coins - curCoins == 2) {
            s += valid[0];
        } else {
            s += valid[2];
        }
    }

    p = s + valid[0];
    coins = press(p);
    curCoins = s.size();
    if (coins - curCoins == 1) {
        s += valid[0];
    } else {
        p = s + valid[1];
        coins = press(p);
        if (coins - curCoins == 1) {
            s += valid[1];
        } else {
            s += valid[2];
        }
    }

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