Submission #715605

#TimeUsernameProblemLanguageResultExecution timeMemory
715605adrilenCombo (IOI18_combo)C++17
5 / 100
1 ms284 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...