# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1142694 | redaisthegoat | 콤보 (IOI18_combo) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "combo.h"
using namespace std;
string guess_sequence(int N) {
string S="";
int rep = press("AB");
int a;
if(rep>=1){
rep= press("A");
if(rep==1){
S+='A';
while(S.length()<N){
a=S.length();
string comb=S+"B"+S+"XX"+S+"XY"+S+"XB";
rep = press(comb);
if(rep==a+1){
S+="B";
}
if(rep==a+2){
S+="X";
}
else S+="Y";
}
rep= press(S+"X");
if(rep==1) S+="X";
else{
rep= press(S+="B");
if(rep==1) S+="B";
else S+="Y";
}
}
else {
S+='B';
while(S.length()<N){
a=S.length();
string comb=S+"A"+S+"XX"+S+"XY"+S+"XA";
rep = press(comb);
if(rep==a+1){
S+="A";
}
if(rep==a+2){
S+="X";
}
else S+="Y";
}
rep= press(S+"X");
if(rep==1) S+="X";
else{
rep= press(S+="A");
if(rep==1) S+="A";
else S+="Y";
}
}
}
}
if(rep==0){
rep = press('X');
if(rep==1){
S+='X';
while(S.length()<N){
a=S.length();
string comb=S+"Y"+S+"AA"+S+"AB"+S+"AY";
rep = press(comb);
if(rep==a+1){
S+="Y";
}
if(rep==a+2){
S+="A";
}
else S+="B";
}
rep= press(S+"A");
if(rep==1) S+="A";
else{
rep= press(S+="Y");
if(rep==1) S+="Y";
else S+="B";
}
}
else{
S+='Y';
while(S.length()<N){
a=S.length();
string comb=S+"X"+S+"AA"+S+"AB"+S+"AX";
rep = press(comb);
if(rep==a+1){
S+="X";
}
if(rep==a+2){
S+="A";
}
else S+="B";
}
rep= press(S+"A");
if(rep==1) S+="A";
else{
rep= press(S+="X");
if(rep==1) S+="X";
else S+="B";
}
}
}
return S;
}