Submission #645092

#TimeUsernameProblemLanguageResultExecution timeMemory
645092NursikCombo (IOI18_combo)C++14
30 / 100
59 ms592 KiB
#include "combo.h" #include <random> #include <iostream> #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back const ll maxn = 2e3 + 1; int used[maxn][4]; vector<char> v = {'A', 'B', 'X', 'Y'}; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); string guess_sequence(int n) { string pref = ""; int get = press("AB"); if (get > 0){ get = press("A"); if (get == 1){ pref += "A"; } else{ pref += "B"; } } else{ get = press("X"); if (get == 1){ pref += "X"; } else{ pref += "Y"; } } vector<char> v2; for (auto it : v){ if (it != pref[0]){ v2.pb(it); } } for (int i = pref.size(); i < n;){ for (int j = 0; j < 3; ++j){ int k = rng() % (j + 1); swap(v2[j], v2[k]); } int ans = 2; for (int j = 0; j < 2; ++j){ string npref = pref; for (int k = 0; k < n; ++k){ npref += v2[j]; } get = press(npref); if (get >= i + 1){ ans = j; int kol = get - (i + 1) + 1; for (int k = 1; k <= kol; ++k){ pref += v2[j]; } break; } } if (ans == 2){ pref += v2[ans]; } i = pref.size(); } return pref; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...