#include "combo.h"
#include<bits/stdc++.h>
using namespace std;
int n;
string sure;
/// a 0
/// b 1
/// x 2
/// y 3
char sym[5];
int first = 0;
int feedback(string &p)
{
int coins = press(p);
return coins;
}
void trypos(int i)
{
vector < char > g;
for (int i = 0; i < 4; ++ i)
{
if(first == i)continue;
g.push_back(sym[i]);
}
string p = "";
for (auto sec: g)
{
p += sure;
p += g[0];
p += sec;
}
p += sure;
p += g[1];
///cout << "spot: " << sure << endl;
///cout << p << endl;
int res = feedback(p);
if(res == sure.size() + 2)sure += g[0];
else if(res == sure.size() + 1)sure += g[1];
else sure += g[2];
}
void trylast()
{
vector < char > g;
for (int i = 0; i < 4; ++ i)
{
if(first == i)continue;
g.push_back(sym[i]);
}
string p = "";
p += sure;
p += g[0];
p += sure;
p += g[1];
int res = feedback(p);
if(res == n-1)sure += g[2];
else
{
p = "";
p += sure;
p += g[0];
if(feedback(p) == n)sure += g[0];
else sure += g[1];
}
}
std::string guess_sequence(int N)
{
n = N;
sym[0] = 'A';
sym[1] = 'B';
sym[2] = 'X';
sym[3] = 'Y';
sure = "";
string p = "AB";
int res = feedback(p);
if(res == 2)first = 0;
else if(res == 1)
{
p = "A";
if(feedback(p) == 1)first = 0;
else first = 1;
}
else
{
p = "X";
if(feedback(p) == 1)first = 2;
else first = 3;
}
sure += sym[first];
for (int i = 1; i < n-1; ++ i)
trypos(i);
if(n > 1)trylast();
return sure;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |