Submission #999519

#TimeUsernameProblemLanguageResultExecution timeMemory
999519spensaCombo (IOI18_combo)C++14
100 / 100
22 ms1940 KiB
#include <bits/stdc++.h>
#include "combo.h"
using namespace std;

std::string guess_sequence(int N) {
    //first letter
    string p = "AB";
    char fir;
    int tmp1 = press(p);
    if(tmp1==0){
        int tmp2 = press("X");
        if(tmp2==1) fir = 'X';
        else fir = 'Y';
    }
    else{
        int tmp2 = press("A");
        if(tmp2==1) fir = 'A';
        else fir = 'B';
    }

    set<char> letters;
    letters.insert('A');
    letters.insert('B');
    letters.insert('X');
    letters.insert('Y');
    letters.erase(fir);
    vector<char> v;
    for(char i: letters) v.push_back(i);
    // for(char i: letters) cout<<i<<" ";
    // cout<<"----\n";

    //the rest of the letters
    string curstr = "";
    curstr += fir;

    if(N==1) return curstr;
    // cout<<curstr<<"!!";

    p = "";
    for(int i=2; i<N; i++){
        string S = "";
        S += curstr;
        int tmp = 0;
        for(char j: letters){
            // cout<<j<<" ";
            if(tmp==0){
                S+=j;
            }
            else{
                S+=curstr;
                S+=j;
                S+=v[0];

                S+=curstr;
                S+=j;
                S+=v[1];
                       
                S+=curstr;
                S+=j;
                S+=v[2];

                break;
            }
            tmp++;
        }

        // cout<<"\n"<<S<<"\n";
        int tmp3 = press(S);
        int sz = curstr.length();
        if(tmp3==(sz)){
            curstr+=v[2];
        }
        else if(tmp3==(sz+1)){
            curstr+=v[0];
        }
        else{
            curstr+=v[1];
        }
        // cout<<curstr<<"\n";

    }

    //last letter
    string S1 = "";
    S1+=curstr;
    S1+=v[0];
    int sz = S1.size();
    int tmp = press(S1);
    if(tmp==sz) curstr+=v[0];
    else{
        string S = "";
        S+=curstr;
        S+=v[1];
        tmp = press(S);
        if(tmp==sz) curstr+=v[1];
        else curstr+=v[2];
    }

    // cout<<curstr<<"\n";
    return curstr;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...