Submission #1245276

#TimeUsernameProblemLanguageResultExecution timeMemory
1245276boyan2010Combo (IOI18_combo)C++20
100 / 100
7 ms548 KiB
#include<bits/stdc++.h>
#include "combo.h"
using namespace std;
string guess_sequence(int N)
{
    if(N==1)
    {
        int coins=press("A");
        if(coins==0)
        {
            coins=press("B");
            if(coins==0)
            {
                coins=press("X");
                if(coins==0)
                {
                    return "Y";
                }
                return "X";
            }
            return "B";
        }
        return "A";
    }
    string p = "AB",S;
    char f;
    int coins=press(p);
    if(coins==0)
    {
        p="X";
        coins=press(p);
        if(coins==0)
        {
            S="Y";
            f='Y';
        }
        else
        {
            S="X";
            f='X';
        }
    }
    else
    {
        p="A";
        coins=press(p);
        if(coins==0)
        {
            S="B";
            f='B';
        }
        else
        {
            S="A";
            f='A';
        }
    }
    while(S.length()<N-1)
    {
        if(f=='A')
        {
            p=S+"BB"+S+"BX"+S+"BY"+S+"X";
            coins=press(p);
            if(coins==S.length()+2)
            {
                S.push_back('B');
            }
            else if(coins==S.length()+1)
            {
                S.push_back('X');
            }
            else
            {
                S.push_back('Y');
            }
        }
        else if(f=='B')
        {
            p=S+"AA"+S+"AX"+S+"AY"+S+"X";
            coins=press(p);
            if(coins==S.length()+2)
            {
                S.push_back('A');
            }
            else if(coins==S.length()+1)
            {
                S.push_back('X');
            }
            else
            {
                S.push_back('Y');
            }
        }
        else if(f=='X')
        {
            p=S+"AA"+S+"AB"+S+"AY"+S+"B";
            coins=press(p);
            if(coins==S.length()+2)
            {
                S.push_back('A');
            }
            else if(coins==S.length()+1)
            {
                S.push_back('B');
            }
            else
            {
                S.push_back('Y');
            }
        }
        else
        {
            p=S+"AA"+S+"AB"+S+"AX"+S+"B";
            coins=press(p);
            if(coins==S.length()+2)
            {
                S.push_back('A');
            }
            else if(coins==S.length()+1)
            {
                S.push_back('B');
            }
            else
            {
                S.push_back('X');
            }
        }
    }
    if(f=='A')
    {
        p=S+"B"+S+"X";
        coins=press(p);
        if(coins==N)
        {
            coins=press(S+"B");
            if(coins==N)
            {
                S.push_back('B');
            }
            else
            {
                S.push_back('X');
            }
        }
        else
        {
            S.push_back('Y');
        }
    }
    else if(f=='B')
    {
        p=S+"A"+S+"X";
        coins=press(p);
        if(coins==N)
        {
            coins=press(S+"A");
            if(coins==N)
            {
                S.push_back('A');
            }
            else
            {
                S.push_back('X');
            }
        }
        else
        {
            S.push_back('Y');
        }
    }
    else if(f=='X')
    {
        p=S+"A"+S+"B";
        coins=press(p);
        if(coins==N)
        {
            coins=press(S+"A");
            if(coins==N)
            {
                S.push_back('A');
            }
            else
            {
                S.push_back('B');
            }
        }
        else
        {
            S.push_back('Y');
        }
    }
    else
    {
        p=S+"A"+S+"B";
        coins=press(p);
        if(coins==N)
        {
            coins=press(S+"A");
            if(coins==N)
            {
                S.push_back('A');
            }
            else
            {
                S.push_back('B');
            }
        }
        else
        {
            S.push_back('X');
        }
    }
    return S;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...