제출 #983624

#제출 시각아이디문제언어결과실행 시간메모리
983624SzymonKrzywda콤보 (IOI18_combo)C++17
100 / 100
13 ms2024 KiB
#include "combo.h"
#include <string>
using namespace std;

string guess_sequence(int N){
    int k;
    char literka;
    string wynik="",query;
    if (press("AB")){
        if (press("A")){
            literka = 'A';
        }
        else{
            literka = 'B';
        }
    }
    else{
        if (press("X")){
            literka = 'X';
        }
        else{
            literka = 'Y';
        }
    }
    wynik += literka;
    //cout << literka << endl;
    
    string li_1="",li_2="",li_3="";
    for (auto i: "ABXY"){
        if (i==literka) continue;
        //cout << li_1 << " " << li_2 << " " << li_3 << " " << i << endl;
        if(li_1=="") li_1 = i;
        else if (li_2=="") li_2 = i;
        else if (li_3=="") li_3 = i;
    }
    //cout << li_1 << " " << li_2 << " " << li_3 << endl;
    for (int i=2; i<N; i++){
        query = wynik+li_1+wynik+li_2+li_1+wynik+li_2+li_2+wynik+li_2+li_3;
        k = press(query);
        if (k-i+1 == 1){
            wynik += li_1;
        }
        else if(k-i+1 == 2){
            wynik += li_2;
        }
        else wynik += li_3;
    }
    
    if (N!=1){
        if (press(wynik+"A"+wynik+"B")==N){
            if (press(wynik+"A")==N){
                literka = 'A';
            }
            else{
                literka = 'B';
            }
        }
        else{
            if (press(wynik+"X")==N){
                literka = 'X';
            }
            else{
                literka = 'Y';
            }
        }
        wynik += literka;
    }
    
    return wynik;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...