제출 #1272263

#제출 시각아이디문제언어결과실행 시간메모리
1272263jungle15Combo (IOI18_combo)C++17
0 / 100
1 ms400 KiB
#include "combo.h" #include <bits/stdc++.h> using namespace std; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); #define Jungle "IOI18_combo" #define getbit(x, i) (((x) >> (i)) & 1) #define MASK(i) (1 << (i)) #define cntbit __builtin_popcount #define MULTEST \ int nq; \ cin >> nq; \ while (nq--) template <typename t> void chkmin(t &a, t b) { if (a > b) a = b; } template <typename t> void chkmax(t &a, t b) { if (a < b) a = b; } string guess_sequence(int n) { string ans = ""; if (press("AB") > 0) { if (press("A") == 1) ans += 'A'; else ans += 'B'; } else { if (press("X") == 1) ans += 'X'; else ans += 'Y'; } char a, b, c; if (ans[0] == 'A') a = 'B', b = 'X', c = 'Y'; else if (ans[0] == 'B') a = 'A', b = 'X', c = 'Y'; else if (ans[0] == 'X') a = 'B', b = 'A', c = 'Y'; else a = 'B', b = 'X', c = 'A'; for (int i = 1; i < n; i++) { string q; q.reserve(ans.size() * 4 + 10); q += ans; q.push_back(a); q.push_back(a); q += ans; q.push_back(a); q.push_back(b); q += ans; q.push_back(b); q.push_back(c); int h = press(q) - (int)ans.size(); if (h == 0) { ans.push_back(c); continue; } if (h == 2) { int j = press(ans + string(2, a)) - (int)ans.size(); if (j == 2) { ans.push_back(a); ans.push_back(a); ++i; } else if (j == 1) { ans.push_back(a); ans.push_back(b); ++i; } else { ans.push_back(b); ans.push_back(c); ++i; } continue; } int j = press(ans + string(2, b)) - (int)ans.size(); if (j == 0) { ans.push_back(c); continue; } if (j == 1) { int k = press(ans + string(2, a)) - (int)ans.size(); if (k == 2) { ans.push_back(a); ans.push_back(a); ++i; } else if (k == 1) { ans.push_back(a); ans.push_back(b); ++i; } else { ans.push_back(b); ans.push_back(b); ++i; } continue; } if (j == 2) { ans.push_back(b); ans.push_back(b); ++i; continue; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...