Submission #123798

#TimeUsernameProblemLanguageResultExecution timeMemory
123798mlyean00Combo (IOI18_combo)C++14
100 / 100
40 ms696 KiB
#include <bits/stdc++.h>
#include "combo.h"

using namespace std;

string moves = "ABXY";

string s;

void get_first() {
    if (press("AB") > 0) {
        if (press("A") > 0) {
            s = "A";
        } else {
            s = "B";
        }
    } else {
        if (press("X") > 0) {
            s = "X";
        } else {
            s = "Y";
        }
    }
    moves.erase(moves.find(s[0]), 1);
}

void get_next() {
    string p = s + moves[0];
    for (char c : moves) {
        p += s;
        p.push_back(moves[1]);
        p.push_back(c);
    }

    switch (press(p) - s.size()) {
    case 0:
        s.push_back(moves[2]);
        break;
    case 1:
        s.push_back(moves[0]);
        break;
    case 2:
        s.push_back(moves[1]);
        break;
    }
}

void get_last() {
    if (press(s + moves[0] + s + moves[1]) - s.size() == 1) {
        if (press(s + moves[0]) - s.size() == 1) {
            s += moves[0];
        } else {
            s += moves[1];
        }
    } else {
        s += moves[2];
    }
}

string guess_sequence(int N) {
    get_first();
    for (int i = 1; i < N - 1; ++i)
        get_next();
    if (N > 1) get_last();
    return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...