Submission #869543

#TimeUsernameProblemLanguageResultExecution timeMemory
869543spetar76Combo (IOI18_combo)C++14
0 / 100
12 ms1360 KiB
#include "combo.h"
using namespace std;
std::string guess_sequence(int N) {
    string S="";
 
    string ne="QWE";
    int qwqw=press("A");
    if (qwqw>0){
        S="A";
        ne="BXY";
    }
    else{
        qwqw=press("B");
        if (qwqw>0){
            S="B";
            ne="AXY";
        }
        else{
            qwqw=press("X");
            if (qwqw>0){
                S="X";
                ne="ABY";
            }
            else{
                S="Y";
                ne="ABX";
            }
        }
    }
 
    if (N==1){return S;}
    else if (N==2){
        if (press(S+ne[0])==2){return S+ne[0];}
        else if (press(S+ne[1])==2){return S+ne[1];}
        else{return S+ne[2];}
    }
    else if (N==3){
        int g=press(S+ne[2]+ne[0] + S+ne[2]+ne[1] + S+ne[2]+ne[2] + S+ne[1]);
        if (g==2){
            int g2=press(S+ne[2]+ne[2]);
            if (g2==2){return S+ne[2]+ne[2];}
            int g1=press(S+ne[2]+ne[1]);
            if (g1==2){return S+ne[2]+ne[1];}
            else{return S+ne[2]+ne[0];}
        }
        else if (g==1){
            int g2=press(S+ne[1]+ne[2]);
            if (g2==2){return S+ne[1]+ne[2];}
            int g1=press(S+ne[1]+ne[1]);
            if (g1==2){return S+ne[1]+ne[1];}
            else{return S+ne[1]+ne[0];}
        }
        else{
            int g2=press(S+ne[0]+ne[2]);
            if (g2==2){return S+ne[0]+ne[2];}
            int g1=press(S+ne[0]+ne[1]);
            if (g1==2){return S+ne[0]+ne[1];}
            else{return S+ne[0]+ne[0];}
        }
    }
 
 
    for (int i=2; i<N-1; ++i){
        int g=press(S+ne[2]+ne[0] + S+ne[2]+ne[1] + S+ne[2]+ne[2] + S+ne[1]);
        S=S+ne[g-S.length()];
    }
    int g=press(S+ne[2]+ne[0] + S+ne[2]+ne[1] + S+ne[2]+ne[2] + S+ne[1]);
    if (g==2){
        int g2=press(S+ne[2]+ne[2]);
        if (g2==2){return S+ne[2]+ne[2];}
        int g1=press(S+ne[2]+ne[1]);
        if (g1==2){return S+ne[2]+ne[1];}
        else{return S+ne[2]+ne[0];}
    }
    else if (g==1){
        int g2=press(S+ne[1]+ne[2]);
        if (g2==2){return S+ne[1]+ne[2];}
        int g1=press(S+ne[1]+ne[1]);
        if (g1==2){return S+ne[1]+ne[1];}
        else{return S+ne[1]+ne[0];}
    }
    else{
        int g2=press(S+ne[0]+ne[2]);
        if (g2==2){return S+ne[0]+ne[2];}
        int g1=press(S+ne[0]+ne[1]);
        if (g1==2){return S+ne[0]+ne[1];}
        else{return S+ne[0]+ne[0];}
    }
    return S;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...