Submission #587603

#TimeUsernameProblemLanguageResultExecution timeMemory
587603shrimbCombo (IOI18_combo)C++17
0 / 100
20 ms336 KiB
#include"bits/stdc++.h"
#include "combo.h"
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

std::string guess_sequence(int N) {
    string s = "";
    int len = 1;
    string pos = "ABXY";
    if (press("AB")) {
        if (press("A")) s = "A";
        else s = "B";
    } else {
        if (press("X")) s = "X";
        else s = "Y";
    }

    pos.erase(find(pos.begin(), pos.end(),s[0]));

    while (len < N) {
        if (N - len == 1) {
            if (press(s + pos[0] + s + pos[1]) - len) {
                if (press(s + pos[0]) - len) s += pos[0];
                else s += pos[1];
            } else {
                s += pos[2];
            }
            len++;
        } else {
            int Q = press(s + pos[0] + pos[0] + s + pos[0] + pos[1] + s + pos[1] + pos[1]);
            if (Q == len+0) {
                s += pos[2];
                len++;
            } else if (Q == len+1) {
                Q = press(s + pos[1] + pos[0]);
                if (Q == len+2) {
                    s += pos[1];
                    s += pos[0];
                    len += 2;
                } else if (Q == 1) {
                    s += pos[1];
                    s += pos[2];
                    len += 2;
                } else {
                    s += pos[0];
                    s += pos[2];
                    len += 2;
                }
            } else {
                Q = press(s + pos[0] + pos[0]);
                if (Q == len+2) {
                    s += pos[0];
                    s += pos[0];
                    len += 2;
                } else if (Q == len+1) {
                    s += pos[0];
                    s += pos[1];
                    len += 2;
                } else {
                    s += pos[1];
                    s += pos[1];
                    len += 2;
                }
            }
        }
    } 
    return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...