# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
112299 | socho | 콤보 (IOI18_combo) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#include "combo.h>
string guess_sequence(int N) {
// return!
string anchor;
int ab = press("AB");
int oa = -1;
int ox = -1;
string rem;
if (ab > 0) {
// must be A or B anchor
oa = press("A");
if (oa > 0) {
anchor = "A";
rem = "BXY";
}
else {
anchor = "B";
rem = "AXY";
}
}
else {
// must be X or Y anchor
ox = press("X");
if (ox > 0) {
anchor = "X";
rem = "ABY";
}
else {
anchor = "Y";
rem = "ABX";
}
}
if (n == 1) return anchor;
// cout << anchor;
string pref = anchor;
for (int i=1; i<N-1; i++) {
string query = pref + rem[0]
+ pref + rem[1] + rem[2]
+ pref + rem[1] + rem[0]
+ pref + rem[1] + rem[1];
//cout << "pres: " << query << endl;
int response = press(query);
//cout << " > got: " << response << endl;
if (response == pref.length()) {
pref += rem[2];
}
else if (response == pref.length() + 1) {
pref += rem[0];
}
else {
pref += rem[1];
}
}
//cout << "give: " << pref << endl;
string ender = pref + rem[0] + pref + rem[1];
int res = press(ender);
if (res == pref.size()) {
pref += rem[2];
}
else {
string ender2 = pref + rem[0];
int resp = press(ender2);
if (resp == pref.size()) {
pref += rem[1];
}
else {
pref += rem[0];
}
}
return pref;
}