#include "combo.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define ff first
#define sd second
string curr;
string ch[] = {"A", "B", "X", "Y"};
ll query(vector<vector<ll>> vv){
string q;
for(auto it : vv){
q = q + curr;
for(auto it1 : it) q = q + ch[it1];
}
// cout << "? " << q << endl;
ll res = press(q);
// cout << " ---> " << res << endl;
return res;
}
std::string guess_sequence(int N) {
ll res = query({{0, 2, 1, 2}});
if(res == 0) curr = ch[3];
else if(res == 1){
res = query({{0, 1, 0}});
if(res == 0) curr = ch[2];
else if(res == 1){
res = query({{0, 3}});
if(res == 1) curr = ch[0] + ch[3];
else curr = ch[1] + ch[3];
}
else{
res = query({{0, 1}});
if(res == 2) curr = ch[0] + ch[1];
else curr = ch[1] + ch[0];
}
}
else{
res = query({{0, 2}});
if(res == 2) curr = ch[0] + ch[2];
else{
res = query({{1, 2}});
if(res == 2) curr = ch[1] + ch[2];
else curr = ch[2] + ch[1];
}
}
// cout << curr << endl;
string ss = "";
ss = ss + curr[0];
// cout << " ---------> " << ss << endl;
for(int i = 0; i < 3; i++) if(ch[i] == ss) swap(ch[i], ch[3]);
// cout << ch[0] << endl;
while(curr.size() < N){
ll sz = curr.size();
if(sz == N - 1){
for(int i = 0; i < 3; i++){
if(query({{i}}) - sz == 1){
curr = curr + ch[i];
break;
}
}
break;
}
ll res = query({{0, 0}, {0, 1}, {1, 0}}) - sz;
if(res == 0){
curr = curr + ch[2];
continue;
}
if(res == 1){
ll res;
if(sz < N - 2){
res = query({{0, 2}, {1, 1, 0}, {1, 1, 1}, {1, 1, 2}}) - sz;
if(res == 1) curr = curr + ch[1] + ch[2];
else if(res == 2) curr = curr + ch[0] + ch[2];
else curr = curr + ch[1] + ch[1];
}
else{
// cout << "a" << endl;
res = query({{0, 2}}) - sz;
if(res == 2) curr = curr + ch[0] + ch[2];
else{
res = query({{1, 2}}) - sz;
if(res == 2) curr = curr + ch[1] + ch[2];
else curr = curr + ch[1] + ch[1];
}
}
}
else{
if(sz < N - 2){
ll res = query({{0, 0}, {1, 0, 0}, {1, 0, 1}, {1, 0, 2}}) - sz;
if(res == 1) curr = curr + ch[0] + ch[1];
else if(res == 2) curr = curr + ch[0] + ch[0];
else curr = curr + ch[1] + ch[0];
}
else{
res = query({{0, 0}}) - sz;
if(res == 2) curr = curr + ch[0] + ch[0];
else{
res = query({{1, 0}}) - sz;
if(res == 2) curr = curr + ch[1] + ch[0];
else curr = curr + ch[0] + ch[1];
}
}
}
}
return curr;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |