Submission #1305174

#TimeUsernameProblemLanguageResultExecution timeMemory
1305174kaloyanCombo (IOI18_combo)C++20
0 / 100
1 ms400 KiB
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cassert>

using namespace std;

inline bool operator == (string &a, string &b)
{
    if(a.size() != b.size()) return 0;

    for(int i = 0 ; i < a.size() ; ++i)
    {
        if(a[i] != b[i])
        {
            return 0;
        }
    }

    return 1;
}

int press(string p);

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

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

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

    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]); 

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

    if (press(res + "A") == N) res.append("A");
    else if (press(res + "B") == N) res.append("B");
    else if (press(res + "X") == N) res.append("X");
    else res.append("Y");
    
    return res;
}


#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...