Submission #1305186

#TimeUsernameProblemLanguageResultExecution timeMemory
1305186kaloyanCombo (IOI18_combo)C++20
94 / 100
8 ms484 KiB
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cassert>

using namespace std;

int press(string p);

string guess_sequence(int N)
{
    string res = "";
    string letters = "";

    if (press("A")) res = "A";
    else if (press("B")) res = "B";
    else if (press("X")) res = "X";
    else res = "Y";

    if (N == 1) return res; 

    for(string s : {"A", "B", "X", "Y"})
    {
        if(s == res) continue;
        letters += s;
    }

    assert(letters.size() == 3);

    for(int i = 1 ; i < N - 1 ; ++i)
    {
        int ans = press(res + letters[0] +
                        res + letters[1] + letters[0] +
                        res + letters[1] + letters[1] +
                        res + letters[1] + letters[2]);

        int len = (int)res.size();

        if (ans == len + 1) res += letters[0];
        else if (ans == len + 2) res += letters[1];
        else res += letters[2];
    }

    if (press(res + "A") == N) res += "A";
    else if (press(res + "B") == N) res += "B";
    else if (press(res + "X") == N) res += "X";
    else res += "Y";

    assert((int)res.size() == N); 
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...