# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1259834 | sokratisi | Combo (IOI18_combo) | C++20 | 0 ms | 0 KiB |
#include "combo.h"
#include <string>
#include <set>
using namespace std;
int coins;
string use;
//int press(string p);
char find_first() {
use = "AB";
coins = press(use);
if (coins) {
use = "A";
coins = press(use);
if (coins) return 'A';
else return 'B';
}
use = "X";
coins = press(use);
if (coins) return 'X';
else return 'Y';
}
string guess_sequence(int n) {
char c = find_first();
set<char> s = {'A', 'B', 'X', 'Y'};
s.erase(c);
vector<char> chrs;
for (auto u: s) chrs.push_back(u);
string p = "";
p += c;
for (int i = 2; i <= n - 1; i++) {
use = p + chrs[0] + chrs[0] + p + chrs[0] + chrs[1] + p + chrs[0] + chrs[2] + p + chrs[1];
int coins = press(use);
if (coins == i + 1) p += chrs[0];
else if (coins == i) p += chrs[1];
else p += chrs[2];
}
use = p + chrs[0];
coins = press(use);
if (coins == n) return use;
use = p + chrs[1];
coins = press(use);
if (coins == n) return use;
return (p + chrs[2]);
}