Submission #1299722

#TimeUsernameProblemLanguageResultExecution timeMemory
1299722cpismayilmmdv985Combo (IOI18_combo)C++20
0 / 100
1 ms400 KiB
#include "combo.h"
#include <bits/stdc++.h>
using namespace std;

string guess_sequence(int N) {
    string res = "", query;
    // find first char of string 
    if (!N) return res;
    if (press("AB")) {
        if (press("A")) res += 'A';
        else            res += 'B';
    } else {
        if (press("X")) res += 'X';
        else            res += 'Y';
    }
    if (N == 1) return res;
    if (res[0] == 'A') {
        for (int i = 2; i < N; i++) {
            query = res + "BX" + res + "BY" + res + "BB" + res + "X";
            int val = press(query);
            if (val == 2)       res += 'B';
            else if (val == 1)  res += 'X';
            else                res += 'Y';
        }
        if (press(res + 'B'))       res += 'B';
        else if (press(res + 'X'))  res += 'X';
        else                        res += 'Y';
    } else if (res[0] == 'B') {
        for (int i = 2; i < N; i++) {
            query = res + "AX" + res + "AY" + res + "AA" + res + "X";
            int val = press(query);
            if (val == 2)       res += 'A';
            else if (val == 1)  res += 'X';
            else                res += 'Y';
        }
        if (press(res + 'A'))       res += 'A';
        else if (press(res + 'X'))  res += 'X';
        else                        res += 'Y';
    } else if (res[0] == 'X') {
        for (int i = 2; i < N; i++) {
            query = res + "AB" + res + "AY" + res + "AA" + res + "Y";
            int val = press(query);
            if (val == 2)       res += 'A';
            else if (val == 1)  res += 'Y';
            else                res += 'B';
        }
        if (press(res + 'A'))       res += 'A';
        else if (press(res + 'B'))  res += 'B';
        else                        res += 'Y';
    } else {
        for (int i = 2; i < N; i++) {
            query = res + "AB" + res + "AX" + res + "AA" + res + "X";
            int val = press(query);
            if (val == 2)       res += 'A';
            else if (val == 1)  res += 'X';
            else                res += 'B';
        }
        if (press(res + 'A'))       res += 'A';
        else if (press(res + 'B'))  res += 'B';
        else                        res += 'X';
    }
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...