#include "combo.h"
#include <bits/stdc++.h>
using namespace std;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
#define Jungle "IOI18_combo"
#define getbit(x, i) (((x) >> (i)) & 1)
#define MASK(i) (1 << (i))
#define cntbit __builtin_popcount
#define MULTEST \
int nq; \
cin >> nq; \
while (nq--)
template <typename t>
void chkmin(t &a, t b)
{
if (a > b)
a = b;
}
template <typename t>
void chkmax(t &a, t b)
{
if (a < b)
a = b;
}
string guess_sequence(int n)
{
string ans = "";
if (press("AB") > 0)
{
if (press("A") == 1)
ans += 'A';
else
ans += 'B';
}
else
{
if (press("X") == 1)
ans += 'X';
else
ans += 'Y';
}
char a, b, c;
if (ans[0] == 'A')
a = 'B', b = 'X', c = 'Y';
else if (ans[0] == 'B')
a = 'A', b = 'X', c = 'Y';
else if (ans[0] == 'X')
a = 'B', b = 'A', c = 'Y';
else
a = 'B', b = 'X', c = 'A';
for (int i = 1; i < n; i++)
{
string q;
q.reserve(ans.size() * 4 + 10);
q += ans;
q.push_back(a);
q.push_back(a);
q += ans;
q.push_back(a);
q.push_back(b);
q += ans;
q.push_back(b);
q.push_back(c);
int h = press(q) - (int)ans.size();
if (h == 0)
{
ans.push_back(c);
continue;
}
if (h == 2)
{
int j = press(ans + string(2, a)) - (int)ans.size();
if (j == 2)
{
ans.push_back(a);
ans.push_back(a);
++i;
}
else if (j == 1)
{
ans.push_back(a);
ans.push_back(b);
++i;
}
else
{
ans.push_back(b);
ans.push_back(c);
++i;
}
continue;
}
int j = press(ans + string(2, b)) - (int)ans.size();
if (j == 0)
{
ans.push_back(c);
continue;
}
if (j == 1)
{
int k = press(ans + string(2, a)) - (int)ans.size();
if (k == 2)
{
ans.push_back(a);
ans.push_back(a);
++i;
}
else if (k == 1)
{
ans.push_back(a);
ans.push_back(b);
++i;
}
else
{
ans.push_back(b);
ans.push_back(b);
++i;
}
continue;
}
if (j == 2)
{
ans.push_back(b);
ans.push_back(b);
++i;
continue;
}
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |