제출 #1235844

#제출 시각아이디문제언어결과실행 시간메모리
1235844khome콤보 (IOI18_combo)C++17
100 / 100
9 ms768 KiB
#include "combo.h" #include<bits/stdc++.h> using namespace std; set<char> st; vector<char> chs; string tik(vector<string> v){ string ans = ""; for (string s : v) ans += s; return ans; } string guess_sequence(int N) { string p = ""; string bas; if (N == 1) { int a = press("A"), b = press("B"), x = press("X"); if (a == 1) return "A"; if (b == 1) return "B"; if (x == 1) return "X"; else return "Y"; } int ab = press("AB"), bx = press("BX"); if (ab == 2) { bas = "AB"; } else if (bx == 2) { bas = "BX"; } else if (ab == 1) { if (bx == 1) { int ba = press("BA"); if (ba == 2) bas = "BA"; else bas = "BY"; } if (bx == 0) { int ax = press("AX"); if (ax == 2) bas = "AX"; else bas = "AY"; } } else if (ab == 0) { if (bx == 1) { if (N == 2) { int xa = press("XA"), xb = press("XB"); if (xa == 2) bas = "XA"; else if (xb == 2) bas = "XB"; else bas = "XY"; return bas; } int xa = press("XAAXABXAYXB"); if (xa == 3) bas = "XA"; else if (xa == 2) bas = "XB"; else bas = "XY"; } if (bx == 0) { if (N == 2){ int ya = press("YA"), yb = press("YB"); if (ya == 2) bas = "YA"; else if (yb == 2) bas = "YB"; else bas = "YX"; return bas; } int yb = press("YAAYABYAXYB"); if (yb == 3) bas = "YA"; else if (yb == 2) bas = "YB"; else bas = "YX"; } } // max 4 guesses to gues the first two; if (N == 2) return bas; st = {'A', 'B', 'Y', 'X'}; st.erase(bas[0]); for (char c : st) chs.push_back(c); while (bas.size() != N - 1) { string a = bas, b = bas, c = bas, d = bas; a += chs[0]; b += chs[0]; c += chs[0]; a += chs[0]; b += chs[1]; c += chs[2]; d += chs[1]; string cur = tik({a, b, c, d}); int ans = press(cur); if (ans == bas.size() + 2) bas += chs[0]; else if (ans == bas.size() + 1) bas += chs[1]; else if (ans == bas.size()) bas += chs[2]; // cout << "currently " << bas << endl; } string a = bas, b = bas, c = bas; a += chs[0]; b += chs[1]; c += chs[2]; int as = press(a); if (as == N) return a; int bs = press(b); if (bs == N) return b; return c; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...