Submission #803733

#TimeUsernameProblemLanguageResultExecution timeMemory
803733ALeonidouCombo (IOI18_combo)C++17
100 / 100
27 ms560 KiB
#include "combo.h"
using namespace std;
 
#define ll long long
string guess_sequence(int n) {
    string p, s = "";
    string w = "ABXY";

    if ( n == 1){
        ll a = press("A"), b = press("B"), x = press("X");
        if (a) return "A";
        else if (b) return "B";
        else if (x) return "X";
        return "Y";
    }

    //find first letter (2 operations)
    ll f = 0, x = press("AB");
    if (x){
        x = press("A");
        if (x) f= 0;
        else f = 1;
    } 
    else{
        x = press("X");
        if (x) f = 2;
        else f = 3;
    }
    s += w[f];
    w.erase(w.begin() + f);

    //dbg(w);

    if (n == 1) return s;

    //find all letters until n-1 (n-2 operations)
    for (ll i =1; i<n-1; i++){
        p = s + w[0] + s + w[1] + w[0] + s + w[1] + w[1] + s + w[1] + w[2];
        //dbg2(s,p);
        x = press(p);
        if (x == i) s += w[2];
        else if (x == i+1) s += w[0];
        else s += w[1];
    }

    //find last letter (2 operations)
    ll a = press(s + w[0]), b = press(s + w[1]);
    if (a == b) s += w[2];
    else if (a > b) s += w[0];
    else s += w[1]; 

    //dbg(s);

    return s;    
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...