This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define sz(x) ((int)x.size())
int press(string p);
char find_first() {
int q1 = press("AB");
if(q1 > 0) {
int q2 = press("A");
if(q2 > 0) return 'A';
return 'B';
}
int q2 = press("X");
if(q2 > 0) return 'X';
return 'Y';
}
string guess_sequence(int N) {
string ans = "";
char premier = find_first();
ans += premier;
vector<char> C;
if('A' != premier) C.push_back('A');
if('B' != premier) C.push_back('B');
if('X' != premier) C.push_back('X');
if('Y' != premier) C.push_back('Y');
vector<string> D;
for(char c1 : C) for(char c2 : C) {
string p = "";
p += c1;
p += c2;
D.push_back(p);
}
for(int i = 1; i < N - 1; ++i) {
string p = "";
vector<string> q(4, ans);
for(int j = 0; j < 3; ++j) {
q[j] += C[0];
q[j] += C[j];
}
q[3] += C[1];
for(string s : q) p += s;
int x = press(p);
if(x == i + 2)
ans += C[0];
else if(x == i + 1)
ans += C[1];
else
ans += C[2];
}
if(N == 1) return ans;
string p1 = ans;
p1 += C[0];
p1 += ans;
p1 += C[1];
int x = press(p1);
if(x == N) {
string p2 = ans;
p2 += C[0];
int y = press(p2);
if(y == N) ans += C[0];
else ans += C[1];
}
else ans += C[2];
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |