Submission #1350774

#TimeUsernameProblemLanguageResultExecution timeMemory
1350774bozhoCombo (IOI18_combo)C++20
100 / 100
5 ms480 KiB
#include <bits/stdc++.h>
#include "combo.h"
using namespace std;

string guess_sequence(int n)
{
    string s = "";
    int op = press("AB");
    vector<string> ops;
    if (op == 2)
    {
        s += "AB";
        ops = {"BX", "BY", "BB", "X"};
    }
    if (op == 1)
    {
        if (press("A"))
        {
            s += 'A';
            ops = {"BX", "BY", "BB", "X"};
        }
        else
        {
            s += 'B';
            ops = {"AX", "AY", "AA", "X"};
        }
    }
    else if (op == 0)
    {
        if (press("X"))
        {
            s += 'X';
            ops = {"BA", "BY", "BB", "A"};
        }
        else
        {
            s += 'Y';
            ops = {"BA", "BB", "BX", "X"};
        }
    }
    string tr;
    while (s.size() < n - 1)
    {
        tr = "";
        for (int i = 0; i < 4; i++)
        {
            tr += s;
            tr += ops[i];
        }
        op = press(tr);
        if (op - s.size() == 0)
        {
            if (s[0] == 'Y')
                s += 'A';
            else
                s += 'Y';
        }
        else if (op - s.size() == 1)
        {
            if (s[0] == 'X')
                s += 'A';
            else
                s += 'X';
        }
        else if (op - s.size() == 2)
        {
            if (s[0] == 'B')
                s += 'A';
            else
                s += 'B';
        }
    }
    if (s.size() == n - 1)
    {
        tr = s + "A" + s + "B";
        if (press(tr) == n)
        {
            tr = s + "A";
            if (press(tr) == n)
                s += 'A';
            else
                s += 'B';
        }
        else
        {
            tr = s + "X";
            if (press(tr) == n)
                s += 'X';
            else
                s += 'Y';
        }
    }
    return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...