| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1355418 | seasonz | Combo (IOI18_combo) | C++20 | 0 ms | 344 KiB |
#include "combo.h"
#include <bits/stdc++.h>
using namespace std;
string find_first()
{
if (press("AB"))
{
if (press("A")) return "A";
else return "B";
}
else
{
if (press("X")) return "X";
else return "Y";
}
}
string find_last(string &past, int N, vector<string> &avail)
{
if (press(past + avail[0]) == N) return avail[0];
if (press(past + avail[1]) == N) return avail[1];
if (press(past + avail[2]) == N) return avail[2];
}
void add_next(string &cur, vector<string> &avail, int &now, int N)
{
if (cur.size() == N-1) return;
string ttry = cur + avail[0] + avail[0] + cur + avail[0] + avail[1] + cur + avail[0] + avail[2] + cur + avail[1];
int out = press(ttry);
cur += avail[2-out+now];
now++;
add_next(cur, avail, now, N);
}
string guess_sequence(int N) {
vector<string> vv = {"A", "B", "X", "Y"};
vector<string> avail;
string first = find_first();
for (string ch : vv) if (ch != first) avail.push_back(ch);
string cur = "" + first;
int now = 1;
add_next(cur, avail, now, N);
cur += find_last(cur, N, avail);
cout << cur;
return cur;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
