| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1322320 | cesh | 콤보 (IOI18_combo) | C++20 | 0 ms | 0 KiB |
#include "combo.h"
using namespace std;
using ll = long long;
string guess_sequence(ll n) {
vector<vector<ll>> is(n, vector<ll>(4));
string f = "AX";
ll c = press(f);
string ans;
vector<char> g;
if (c >= 1) {
f = "A";
c = press(f);
if (c >= 1) {
for (ll i = 1; i < n; i++) is[i][0] = 1;
ans.push_back('A');
g.push_back('X');
g.push_back('B');
g.push_back('Y');
} else {
for (ll i = 1; i < n; i++) is[i][1] = 1;
ans.push_back('X');
g.push_back('A');
g.push_back('B');
g.push_back('Y');
}
} else {
f = "B";
c = press(f);
if (c >= 1) {
for (ll i = 1; i < n; i++) is[i][0] = 1;
ans.push_back('B');
g.push_back('A');
g.push_back('X');
g.push_back('Y');
} else {
for (ll i = 1; i < n; i++) is[i][1] = 1;
ans.push_back('Y');
g.push_back('A');
g.push_back('X');
g.push_back('B');
}
}
for (ll i = 1; i < n - 1; i++) {
string f = ans + g[0] + ans + g[1] + g[0] + ans + g[1] + g[1] + ans + g[1] + g[2];
c = press(f);
if (c >= ans.size() + 2) ans.push_back(g[1]);
else if (c >= ans.size() + 1) ans.push_back(g[0]);
else ans.push_back(g[2]);
}
c = press(ans + g[0]);
if (c >= ans.size() + 1) ans.push_back(g[0]);
else {
c = press(ans + g[1]);
if (c >= ans.size() + 1) ans.push_back(g[1]);
else ans.push_back(g[2]);
}
return ans;
}
