Submission #156829

#TimeUsernameProblemLanguageResultExecution timeMemory
156829xyzyzlCombo (IOI18_combo)C++14
100 / 100
61 ms568 KiB
#include <bits/stdc++.h>

#pragma GCC optimize("O3")

using namespace std;

#define MAXN 200005

#define FOR(i, n) for (int i = 0; i < n; i++)
#define FORR(j, i, n) for (int i = j; i < n; i++)
#define FORD(i, n) for (int i = n - 1; i >= 0; i--)
#define FOBIR(i, n) for (int i = 1; i <= n; i++)
#define pb push_back
#define mp make_pair
#define endl '\n'
#define DUEHOANG                  \
	ios_base::sync_with_stdio(0); \
	cin.tie(NULL);                \
	cout.tie(NULL)

#define JaydenXia(in, out) \
	freopen(in, "r", stdin); \
	freopen(out, "w", stdout);

#define long long long

typedef set<int> si;
typedef vector<int> vi;
typedef pair<int, int> pii;
typedef vector<pii> vii;
typedef priority_queue<int> pqi;
typedef stack<int> sti;
typedef queue<int> qi;
typedef deque<int> di;
typedef map<int, int> mii;
#define f first
#define s second

int press(string p);

string guess_sequence(int n)
{
    string ans = "";
    if(press("AB") >= 1)
    {
        if(press("A") >= 1) ans += 'A';
        else ans += 'B';
    }
    else if(press("X") >= 1) ans += 'X';
    else ans += 'Y';

    vector<char> poss;
    poss.push_back('A');
    poss.push_back('B');
    poss.push_back('Y');
    poss.push_back('X');
    poss.erase(find(poss.begin(), poss.end(), ans[0]));

    for(int i = 2; i < n; i++)
    {
        int next = press(ans + poss[0] + (ans + poss[1] + poss[0] + ans + poss[1] + poss[1] + ans + poss[1] + poss[2]));
        if(next < i) ans += poss[2];
        else if(next == i) ans += poss[0];
        else ans += poss[1];
    }

    if(n == 1) return ans;
    if(press(ans + poss[0]) == n) ans = ans + poss[0];
    else if(press(ans + poss[1]) == n) ans = ans + poss[1];
    else ans = ans + poss[2];
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...