Submission #1369575

#TimeUsernameProblemLanguageResultExecution timeMemory
1369575abgfd324Combo (IOI18_combo)C++20
0 / 100
0 ms344 KiB
#include<iostream>
#include<vector>
#include"combo.h"
using namespace std;
vector<char> available;
string guess_sequence(int N)
{
    string ans = "";
    if(press("AB"))
    {
        if(press("A")) ans.push_back('A');
        else ans.push_back('B');
    }
    else
    {
        if(press("X")) ans.push_back('X');
        else ans.push_back('Y');
    }
    if(ans[0] != 'A') available.push_back('A');
    if(ans[0] != 'B') available.push_back('B');
    if(ans[0] != 'X') available.push_back('X');
    if(ans[0] != 'Y') available.push_back('Y');
    int curL = 1;
    while(curL < N-2)
    {
        string cur = ans;
        cur.push_back(available[0]);
        cur.push_back(available[1]);
        cur.push_back(available[0]);
        cur.push_back(available[2]);
        cur.push_back(available[2]);
        cur.push_back(available[2]);
        int cr = press(cur);
        if(cr == curL + 2)
        {
            string cur1 = ans;
            cur1.push_back(available[0]);
            cur1.push_back(available[1]);
            int an = press(cur1);
            if(an == curL + 2)
            {
                ans.push_back(available[0]);
                ans.push_back(available[1]);
            }
            else if(an == curL + 1)
            {
                ans.push_back(available[0]);
                ans.push_back(available[2]);
            }
            else
            {
                ans.push_back(available[2]);
                ans.push_back(available[2]);
            }
            curL+=2;
        }
        else if(cr == curL + 1)
        {
            string cur1 = ans;
            cur1.push_back(available[2]);
            cur1.push_back(available[0]);
            int an = press(cur1);
            if(an == curL + 2)
            {
                ans.push_back(available[2]);
                ans.push_back(available[0]);
            }
            else if(an == curL + 1)
            {
                ans.push_back(available[2]);
                ans.push_back(available[1]);
            }
            else
            {
                ans.push_back(available[0]);
                ans.push_back(available[0]);
            }
            curL+=2;   
        }
        else
        {
            ans.push_back(available[1]);
            curL++;
        }
    }
    if(curL == N-2)
    {
        string cur = ans;
        cur.push_back(available[0]);
        if(press(cur) == N-1)
        {
            ans.push_back(available[0]);
        }
        else
        {
            cur = ans;
            ans.push_back(available[1]);
            if(press(cur) == N-1)
            {
                ans.push_back(available[1]);
            }
            else
            {
                ans.push_back(available[2]);
            }
        }
    }
    return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...