이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <string>
//#define DEBUG
#ifdef DEBUG
#define watch(x) cerr<<#x<<": "<<(x)<<endl
#else
#define watch(x)
#endif
#include "combo.h"
using namespace std;
char getFirst() {
if (press("AB") >= 1) {
return press("A")==1 ? 'A' : 'B';
} else {
return press("X")==1 ? 'X' : 'Y';
}
}
string valid = "ABXY";
string newValid(string s, char first) {
string r;
for (char c : s) {
if (c != first) {
r.push_back(c);
}
}
return r;
}
int sz(string s) {
return s.size();
}
string guess_sequence(int N) {
string p,S;
char first = getFirst();
S.push_back(first);
watch(first);
if (N > 1) {
valid = newValid(valid,first);
watch(valid);
for (int i=2; i<N; i++) {
int r = press(S+valid[0] + S+valid[1]+valid[0] + S+valid[1]+valid[1] + S+valid[1]+valid[2]);
if (r == sz(S)) {
S.push_back(valid[2]);
} else if (r == sz(S) + 1) {
S.push_back(valid[0]);
} else {
S.push_back(valid[1]);
}
watch(S);
}
if (press(S+valid[0] + S+valid[1]) == sz(S)) {
S.push_back(valid[2]);
} else if (press(S+valid[0]) == sz(S)) {
S.push_back(valid[1]);
} else {
S.push_back(valid[0]);
}
watch(S);
}
return S;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |