Submission #1146599

#TimeUsernameProblemLanguageResultExecution timeMemory
1146599KickingKunCombo (IOI18_combo)C++20
100 / 100
7 ms592 KiB
// 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...