제출 #1142677

#제출 시각아이디문제언어결과실행 시간메모리
1142677redamoi콤보 (IOI18_combo)C++20
5 / 100
0 ms396 KiB
#include "combo.h"

std::string guess_sequence(int N) {
    std::string S="";
    std::string p="";
    std::string f="";
    int coins = press("AB");
    if(coins >= 1){
        coins = press("A");
        if(coins ==1) S+="A";
        else S+="B";
    }else{
        coins = press("X");
        if(coins ==1) S+="X";
        else S+="Y";
    }
    f+=S;
    
    for(int i=1;i<=N-2;i++){
        if(f=="A"){
            p = S+"B"+S+"XX"+S+"XY"+S+"XB";
            coins = press(p);
            if(coins == i+1){
                S+="B";
            }else if(coins == i+2){
                S+="X";
            }else{
                S+="Y";
            }  
        }
        
        if(f=="B"){
            p = S+"A"+S+"XX"+S+"XY"+S+"XA";
            coins = press(p);
            if(coins == i+1){
                S+="A";
            }else if(coins == i+2){
                S+="X";
            }else{
                S+="Y";
            }  
        }
        
        if(f=="X"){
            p = S+"B"+S+"AA"+S+"AY"+S+"AB";
            coins = press(p);
            if(coins == i+1){
                S+="B";
            }else if(coins == i+2){
                S+="A";
            }else{
                S+="Y";
            }  
        }
        
        if(f=="Y"){
            p = S+"B"+S+"XX"+S+"XA"+S+"XB";
            coins = press(p);
            if(coins == i+1){
                S+="B";
            }else if(coins == i+2){
                S+="X";
            }else{
                S+="A";
            }  
        }
    }
    
    if(f=="A"){
        p=S+"X";
        int coins = press(p);
        if(coins == N){
            S+="X";
        }else{
            p=S+"Y";
            coins = press(p);
            if(coins ==N) S+="Y";
            else S+="B";
        }
    }
        
    if(f=="B"){
        p=S+"X";
        int coins = press(p);
        if(coins == N){
            S+="X";
        }else{
            p=S+"Y";
            coins = press(p);
            if(coins ==N) S+="Y";
            else S+="A";
        }
    }
    
    if(f=="Y"){
        p=S+"X";
        int coins = press(p);
        if(coins == N){
            S+="X";
        }else{
            p=S+"A";
            coins = press(p);
            if(coins ==N) S+="A";
            else S+="B";
        }
    }
    
    if(f=="X"){
        p=S+"A";
        int coins = press(p);
        if(coins ==N){
            S+="A";
        }else{
            p=S+"Y";
            coins = press(p);
            if(coins ==N) S+="Y";
            else S+="B";
        }
    }
    
    return S;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...