제출 #1369583

#제출 시각아이디문제언어결과실행 시간메모리
1369583abgfd324콤보 (IOI18_combo)C++20
100 / 100
5 ms476 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+=ans;
        cur.push_back(available[0]);
        cur.push_back(available[2]);
        cur+=ans;
        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-1)
    {
        string cur = ans;
        cur.push_back(available[0]);
        if(press(cur) == N)
        {
            ans.push_back(available[0]);
        }
        else
        {
            cur = ans;
            cur.push_back(available[1]);
            if(press(cur) == N)
            {
                ans.push_back(available[1]);
            }
            else
            {
                ans.push_back(available[2]);
            }
        }
    }
    return ans;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…