Submission #1168500

#TimeUsernameProblemLanguageResultExecution timeMemory
1168500HoriaHaivasCombo (IOI18_combo)C++20
97 / 100
7 ms484 KiB
#include <bits/stdc++.h>
#include "combo.h"

using namespace std;

string guess_sequence(int N)
{
    int n,len,i;
    n=N;
    string options;
    string base;
    base="";
    if (press("A")==1)
    {
        base+="A";
    }
    else if (press("B")==1)
    {
        base+="B";
    }
    else if (press("X")==1)
    {
        base+="X";
    }
    else
    {
        base+="Y";
    }
    if (n==1)
        return base;
    len=1;
    if (base=="A")
    {
        for (i=2; i<n; i++)
        {
            string ask;
            int rez;
            ask=base+"B"+base+"XX"+base+"XB"+base+"XY";
            rez=press(ask);
            if (rez-len==1)
                base+="B";
            if (rez-len==2)
                base+="X";
            if (rez-len==0)
                base+="Y";
            len++;
        }
        if (press(base+"B")==len+1)
            base+="B";
        else if (press(base+"X")==len+1)
            base+="X";
        else
            base+="Y";
    }
    if (base=="B")
    {
        for (i=2; i<n; i++)
        {
            string ask;
            int rez;
            ask=base+"A"+base+"XX"+base+"XA"+base+"XY";
            rez=press(ask);
            if (rez-len==1)
                base+="A";
            if (rez-len==2)
                base+="X";
            if (rez-len==0)
                base+="Y";
            len++;
        }
        if (press(base+"A")==len+1)
            base+="A";
        else if (press(base+"X")==len+1)
            base+="X";
        else
            base+="Y";
    }
    if (base=="X")
    {
        for (i=2; i<n; i++)
        {
            string ask;
            int rez;
            ask=base+"A"+base+"BB"+base+"BA"+base+"BY";
            rez=press(ask);
            if (rez-len==1)
                base+="A";
            if (rez-len==2)
                base+="B";
            if (rez-len==0)
                base+="Y";
            len++;
        }
        if (press(base+"A")==len+1)
            base+="A";
        else if (press(base+"B")==len+1)
            base+="B";
        else
            base+="Y";
    }
    if (base=="Y")
    {
        for (i=2; i<n; i++)
        {
            string ask;
            int rez;
            ask=base+"A"+base+"BB"+base+"BA"+base+"BX";
            rez=press(ask);
            if (rez-len==1)
                base+="A";
            if (rez-len==2)
                base+="B";
            if (rez-len==0)
                base+="X";
            len++;
        }
        if (press(base+"A")==len+1)
            base+="A";
        else if (press(base+"B")==len+1)
            base+="B";
        else
            base+="X";
    }
    return base;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...