Submission #1135882

#TimeUsernameProblemLanguageResultExecution timeMemory
1135882vibeduckCombo (IOI18_combo)C++20
100 / 100
6 ms484 KiB
#include "combo.h"
#include <bits/stdc++.h> 
using namespace std;

#define pb push_back
#define pf push_front
#define mp make_pair
#define fi first
#define se second
//#define int long long
#define all(x) (x).begin(), (x).end()

typedef long double ld;
typedef long long ll;
typedef pair<ll,ll> pll;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<bool> vb;
typedef vector<vector<int>> vvi;
typedef vector<vector<bool>> vvb;
typedef vector<vector<ll>> vvll;
typedef vector<string> vs;
typedef vector<vector<string>> vvs;
typedef vector<char> vc;
typedef vector<vector<char>> vvc;
typedef map<int, int> mii;
typedef unordered_map<int, int> umii;

string guess_sequence(int N) {
    string p = "";

    // first letter
    int x = press("AB");
    if (x) {
        x = press("A");
        if (x) p += "A";
        else p += "B";
    } else {
        x = press("X");
        if (x) p += "X";
        else p += "Y";
    }

    vs ops;
    if (p[0] != 'A') ops.pb("A");
    if (p[0] != 'B') ops.pb("B");
    if (p[0] != 'X') ops.pb("X");
    if (p[0] != 'Y') ops.pb("Y");
    for (int i = 2; i <= N - 1; i++) {
        assert(ops.size() == 3);
        x = press(p + ops[0] + p + ops[1] + ops[0] + p + ops[1] + ops[1] + p + ops[1] + ops[2]);
        if (x == p.size()) {
            p += ops[2];
            continue;
        }
        if (x == p.size() + 1) {
            p += ops[0];
            continue;
        }
        p += ops[1];
    }

    if (p.size() == N - 1) {
        x = press(p + "A" + p + "B");
        if (x == N) {
            x = press(p + "A");
            if (x == N) p += "A";
            else p += "B";
        } else {
            x = press(p + "X");
            if (x == N) p += "X";
            else p += "Y";
        }
    }
    return p;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...