# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1142949 | redacode | Combo (IOI18_combo) | C++20 | 0 ms | 0 KiB |
#include "combo.h"
std::string guess_sequence(int N) {
std::string S="";
std::string p="";
std::string f="";
int coins = press("AB");
if(coins >= 1){
coins = press("A");
if(coins ==1) S+="A";
else S+="B";
}else{
coins = press("X");
if(coins ==1) S+="X";
else S+="Y";
}
f+=S;
if(N==1) return s;
for(int i=1;i<=N-2;i++){
if(f=="A"){
p = S+"B"+S+"XX"+S+"XY"+S+"XB";
coins = press(p);
if(coins == i+1){
S+="B";
}else if(coins == i+2){
S+="X";
}else{
S+="Y";
}
}
if(f=="B"){
p = S+"A"+S+"XX"+S+"XY"+S+"XA";
coins = press(p);
if(coins == i+1){
S+="A";
}else if(coins == i+2){
S+="X";
}else{
S+="Y";
}
}
if(f=="X"){
p = S+"B"+S+"AA"+S+"AY"+S+"AB";
coins = press(p);
if(coins == i+1){
S+="B";
}else if(coins == i+2){
S+="A";
}else{
S+="Y";
}
}
if(f=="Y"){
p = S+"B"+S+"XX"+S+"XA"+S+"XB";
coins = press(p);
if(coins == i+1){
S+="B";
}else if(coins == i+2){
S+="X";
}else{
S+="A";
}
}
}
if(f=="A"){
p=S+"X";
int coins = press(p);
if(coins == N){
S+="X";
}else{
p=S+"Y";
coins = press(p);
if(coins ==N) S+="Y";
else S+="B";
}
}
if(f=="B"){
p=S+"X";
int coins = press(p);
if(coins == N){
S+="X";
}else{
p=S+"Y";
coins = press(p);
if(coins ==N) S+="Y";
else S+="A";
}
}
if(f=="Y"){
p=S+"X";
int coins = press(p);
if(coins == N){
S+="X";
}else{
p=S+"A";
coins = press(p);
if(coins ==N) S+="A";
else S+="B";
}
}
if(f=="X"){
p=S+"A";
int coins = press(p);
if(coins ==N){
S+="A";
}else{
p=S+"Y";
coins = press(p);
if(coins ==N) S+="Y";
else S+="B";
}
}
return S;
}