| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1355397 | seasonz | 콤보 (IOI18_combo) | C++20 | 0 ms | 0 KiB |
#include "combo.h"
#include <bits/stdc++.h>
using namespace std;
char find_first()
{
if (press("AB"))
{
if (press("A")) return 'A';
else return 'B';
}
else
{
if (press("X")) return 'X';
else return 'Y';
}
}
void add_next(string &cur, vector<char> &avail, int &now, int N);
{
if (cur.size() == N) return;
string ttry = cur + avail[0] + avail[0] + cur + avail[0] + avail[1] + cur + avail[1];
int out = press(ttry);
if (out - now == 2) cur += avail[0];
else if (out - now == 1) cur += avail[1];
else cur += avail[2];
now++;
add_next(cur, avail, now, N);
}
string guess_sequence(int N) {
vector<char> vv = {'A', 'B', 'X', 'Y'};
vector<char> avail;
char first = find_first();
for (char ch : vv) if (ch != first) avail.push_back(ch);
string cur = "";
int now = 0;
add_next(cur, avail, now, N);
return cur;
}
