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>
#include "combo.h"
using namespace std;
using ll = long long;
typedef pair<int, int> pii;
string guess_sequence(int n)
{
string output;
vector <char> letters = { 'A', 'B', 'X', 'Y' };
// Find first
int a, b;
a = press(string(n, letters[0]) + string(n, letters[1]));
if (a > 0)
{
// Means it starts with a or b
b = press(string(n, letters[0]));
if (b > 0) {
output += string(a, letters[0]);
letters.erase(letters.begin());
} else {
output += string(a, letters[1]);
letters.erase(letters.begin() + 1);
}
} else {
b = press(string(n, letters[2]));
if (b > 0)
{
output += string(b, letters[2]);
letters.erase(letters.begin() + 2);
} else {
output += string(n, letters[3]);
letters.erase(letters.begin() + 3);
}
}
a = press(output + string(n, letters[0])), b = press(output + string(n, letters[1]));
output.resize(min(a, b));
// Can be improved by testing two first, then we now the length
if (a > b)
{
output += string(a - b, letters[0]);
letters.erase(letters.begin());
} else if (b > a) {
output += string(b - a, letters[1]);
letters.erase(letters.begin() + 1);
} else {
output += string(press(output + string(n, letters[2])) - (int)output.size(), letters[2]);
letters.erase(letters.begin() + 2);
}
a = press(output + string(n, letters[0]));
if (a > (int)output.size())
{
output += string(a - (int)output.size(), letters[0]);
letters.erase(letters.begin());
} else {
output += string(press(output + string(n, letters[1])) - output.size(), letters[1]);
letters.erase(letters.begin() + 1);
}
if (output.size() != (size_t)n)
{
output += string(n - output.size(), letters[0]);
}
return output;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |