제출 #1295783

#제출 시각아이디문제언어결과실행 시간메모리
1295783Fatonim콤보 (IOI18_combo)C++20
97 / 100
9 ms480 KiB
#include "combo.h" #include <bits/stdc++.h> using namespace std; #define popcount(n) __builtin_popcountll(n) #define clz(n) __builtin_clzll(n) #define print(a) cerr << "[" << #a << " = " << (a) << "] " #define dbg(a) cerr << __LINE__ << ": "; print(a); cerr << "\n" #define sz(a) (int)((a).size()) string guess_sequence(int n) { if (n == 1) { if (press("A")) return "A"; if (press("B")) return "B"; if (press("X")) return "X"; return "Y"; } vector<string> v = {"A", "B", "X", "Y"}; int cnt = 0; string s = ""; for (auto x : v) { if (press(x)) { s = x; break; } ++cnt; if (cnt == 3) break; } if (s == "") s = "Y"; vector<string> nv; for (auto x : v) { if (x == s) continue; nv.push_back(x); } v = nv; // dbg(s); for (int i = 1; i < n; ++i) { if (i == n - 1) { if (press(s + v[0]) - sz(s) == 1) s += v[0]; else if (press(s + v[1]) - sz(s) == 1) s += v[1]; else s += v[2]; continue; } string p = s + v[0] + v[0] + s + v[0] + v[1] + s + v[0] + v[2] + s + v[1] + s[0]; int res = press(p) - sz(s); if (res == 2) s += v[0]; else if (res == 1) s += v[1]; else s += v[2]; // dbg(s); } return s; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...