// PHK
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define ld long double
#define bigint __int128
#define emb emplace_back
#define pb push_back
#define pii pair <int, int>
#define fi first
#define se second
#define all(v) v.begin(), v.end()
#define Task ""
#define MASK(k) (1ull << k)
#define bitcnt(k) __builtin_popcount(k)
#define testBit(n, k) ((n >> k) & 1)
#define flipBit(n, k) (n ^ (1ll << k))
#define offBit(n, k) (n & ~MASK(k))
#define onBit(n, k) (n | (1ll << k))
template <class T> bool minimize(T &a, T b) {if (a > b) {a = b; return true;} return false;}
template <class T> bool maximize(T &a, T b) {if (a < b) {a = b; return true;} return false;}
const int N = 2e5 + 5, lim = 60, mod = 1e9 + 7;
const ll INF = 1e18;
int press(string p);
string guess_sequence(int n) {
string res;
int a = press("AB");
if (a > 0) {
if (press("A")) res = "A";
else res = "B";
}
else {
if (press("X")) res = "X";
else res = "Y";
} // 2
vector <char> other;
for (char c: "ABXY")
if (c != res[0]) other.emplace_back(c);
char b = other[0], x = other[1], y = other[2];
for (int i = 2; i < n; i++) { // n - 2
string bb = res + b + b, bx = res + b + x, xb = res + x + b;
string ask = bb + bx + xb; int len = press(ask);
if (len - (i - 1) == 0) {
res += y;
}
else if (len - (i - 1) == 1) {
// by, xx, xy -> hoi xx -> 0 la by, 2 la xx, 1 la xy
ask = res + x + x; len = press(ask);
if (len - (i - 1) == 0) res += b, res += y;
else if (len - (i - 1) == 1) res += x, res += y;
else res += x, res += x;
++i;
}
else {
// bb, bx, xb -> hoi bb ->
ask = res + b + b; len = press(ask);
if (len - (i - 1) == 0) res += x, res += b;
else if (len - (i - 1) == 1) res += b, res += x;
else res += b, res += b;
++i;
}
}
if (res.size() < n) { // 2
if (press(res + b) == n) res += b;
else {
if (press(res + x) == n) res += x;
else res += y;
}
}
return res;
}
// hoi bb bx xb:
// bb bx by xb xx xy yb yx yy
// 2 2 1 2 1 1 0 0 0
#ifdef cute
int press(string p) {
cerr << p << endl;
int x; cin >> x;
return x;
}
int main() {
cout << guess_sequence(3);
}
#endif
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |