제출 #757766

#제출 시각아이디문제언어결과실행 시간메모리
757766taher콤보 (IOI18_combo)C++17
100 / 100
32 ms660 KiB
#include <bits/stdc++.h> #include "combo.h" using namespace std; /* int press(string s) { cout << s << '\n'; cout.flush(); int val; cin >> val; return val; } */ string Guess_first() { if (press("AB")) { if (press("A")) return "A"; return "B"; } else { if (press("X")) return "X"; return "Y"; } } bool Guess_last(string f) { int n = (int)f.length(); if (press(f) == n) { return true; } return false; } string guess_sequence(int n) { string s = Guess_first(); string ans = s; string c = "ABXY"; for (int i = 0 ; i < 4 ; i++) { if (c[i] == s[0]) { c.erase(c.begin() + i); break; } } auto Create = [&](string cur) { cur += c[0]; cur += s; cur += c[1]; cur += c[0]; cur += s; cur += c[1]; cur += c[1]; cur += s; cur += c[1]; cur += c[2]; assert((int)cur.length() <= 4 * n); return cur; }; for (int i = 1 ; i < n - 1 ; i += 1) { string cur = Create(ans); int foo = press(cur); if (foo == i) { ans += c[2]; } else if (foo == i + 1) { ans += c[0]; } else { ans += c[1]; } s = ans; } if (n > 1) { bool ok = false; for (int i = 0 ; i < 2 ; i++) { string cur = ans + c[i]; if (Guess_last(cur)) { ok = true; ans += c[i]; break; } } if (!ok) { ans += c[2]; } } return ans; } /* int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; string ans = guess_sequence(n); cout << ans << '\n'; return 0; } */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...