제출 #228355

#제출 시각아이디문제언어결과실행 시간메모리
228355Tehillah콤보 (IOI18_combo)C++14
5 / 100
30 ms500 KiB
#include <bits/stdc++.h> #include "combo.h" using namespace std; using ll = long long; #define pb push_back #define mkp make_pair #define ff first #define ss second #define all(a) a.begin(), a.end() #define sz(a) (int)(a.size()) #define clr(a, b) memset(a, b, sizeof(a)) #define REP(i, a, b) for(int i=(int)(a); i<(int)(b); ++i) #define REPD(i, a, b) for(int i=(int)(a)-1; i>=(int)(b); --i) #define FOR(it,c) for ( __typeof((c).begin()) it=(c).begin(); it!=(c).end(); it++ ) template<typename T> inline bool chkmin(T &a, const T &b) { return a > b ? a = b, 1 : 0; } template<typename T> inline bool chkmax(T &a, const T &b) { return a < b ? a = b, 1 : 0; } mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); string guess_sequence(int N) { string res = ""; int ret = press("AB"); if(ret >= 1) { ret = press("A"); res += (ret == 1) ? 'A' : 'B'; } else { ret = press("X"); res += (ret == 1) ? 'X' : 'Y'; } char c[] = {'A', 'B', 'X', 'Y'}; char f[3]; REP(i, 1, N) { string q = res; REP(j, 0, 4) { if(res[0] != c[j]) { if(sz(q) > sz(res)) { f[1] = c[j]; REP(k, 0, 4) { if(c[k] != res[0]) q += res + c[j] + c[k]; } } else q += c[j], f[0] = c[j]; } } REP(j, 0, 4) { if(c[j] == res[0]) continue; int done = 0; REP(k, 0, 2) { if(c[j] == f[k]) done = 1; } if(!done) f[2] = c[j]; } if(sz(q) > 4*N) { ret = press(res + "A" + res + "B"); if(ret >= i+1) { ret = press(res + "A"); if(ret == i+1) res += 'A'; else res += 'B'; } else { ret = press(res + "X"); if(ret == i+1) res += 'X'; else res += 'Y'; } } else { ret = press(q); if(ret == i+1) { res += f[0]; } else if(ret == i+2) { res += f[1]; } else { res += f[2]; } } } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...