Submission #1356929

#TimeUsernameProblemLanguageResultExecution timeMemory
1356929skuruCombo (IOI18_combo)C++20
0 / 100
0 ms344 KiB
#include "combo.h"
#include <algorithm>
#include <vector>
#include <cassert>
using namespace std;

#define all(v) (v).begin(), (v).end()

template <typename T>
bool minimize(T& target, T candidate) {
    return target > candidate ? (target = candidate, true) : false;
}
template <typename T>
bool maximize(T& target, T candidate) {
    return target < candidate ? (target = candidate, true) : false;
}

vector<char> chr = {'A', 'B', 'X', 'Y'};

string guess_sequence(int N) {
    string S;

    if (press("AB") == 0) {
        if (press("X"))
            S.push_back('X');
        else
            S.push_back('Y');
    } else {
        if (press("A"))
            S.push_back('A');
        else
            S.push_back('B');
    }
    chr.erase(remove(all(chr), S[0]), chr.end());

    while (S.size() < N) {
        S.push_back(chr[0]);
        S.push_back(chr[1]);
        
        int coin = press(S);
        
        if (coin == S.size() - 2) {
            S.pop_back();
            S.pop_back();
            S.push_back(chr[2]);
        } else if (coin == S.size() - 1)
            S.pop_back();
    }

    if (press(S) != S.size())
        S.pop_back();

    return S;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...