제출 #1347483

#제출 시각아이디문제언어결과실행 시간메모리
1347483eliCombo (IOI18_combo)C++20
100 / 100
5 ms480 KiB
#include "combo.h"
#include<bits/stdc++.h>
using namespace std;
string guess_sequence(int N) {
    string p = "AB";
    char m[3];

    int a = press(p), len = 1;
    if(a > 0){
        p = "A";
        a = press(p);
        if(a > 0){
            m[0] = 'B';
            m[1] = 'Y';
            m[2] = 'X';
        }else{
            p = 'B';
            m[0] = 'A';
            m[1] = 'Y';
            m[2] = 'X';
        }
    }else{
        m[0] = 'A';
        m[1] = 'B';

        p = "X";
        a = press(p);
        if(a > 0) m[2] = 'Y';
        else{
            p = 'Y';
            m[2] = 'X';
        }
    }

    string S;
    for(int i = 2; i < N; i++){
        S = p;
        S.push_back(m[0]);
        S += p;
        S.push_back(m[1]);
        S.push_back(m[0]);
        S += p;
        S.push_back(m[1]);
        S.push_back(m[1]);
        S += p;
        S.push_back(m[1]);
        S.push_back(m[2]);
        a = press(S);

        if(a - len == 0) p.push_back(m[2]);
        else if(a - len == 1) p.push_back(m[0]);
        else p.push_back(m[1]);
        len ++;
    }
    if(N != 1){
        S = p;
        S.push_back(m[0]);
        S += p;
        S.push_back(m[1]);
        a = press(S);
        if(a - len == 0) p.push_back(m[2]);
        else{
            S = p;
            S.push_back(m[0]);
            a = press(S);
            if(a - len == 1) p.push_back(m[0]);
            else p.push_back(m[1]);
        }
    }
    return p;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...