# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
468082 | pluto_ish | 콤보 (IOI18_combo) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define pb push_back
#define ff first
#define ss second
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll INF = (ll)1<<62;
const ll MOD = 1e9+7;
const int iINF = 1<<30;
const double PI = 3.14159265359;
string guess_sequence(int n){
string curr = "";
if(press("AB")){
if(press("A")) curr = "A";
else curr = "B";
}
else{
if(press("X")) curr = "X";
else curr = "Y";
}
string adder[4] = "";
string rem = "";
if(curr == "A"){
adder[0] = "BB"; adder[1] = "BX"; adder[2] = "BY"; adder[3] = "X"; rem = "Y";
}
else if(curr == "B"){
adder[0] = "AA"; adder[1] = "AX"; adder[2] = "AY"; adder[3] = "X"; rem = "Y";
}
else if(curr == "X"){
adder[0] = "AA"; adder[1] = "AB"; adder[2] = "AY"; adder[3] = "Y"; rem = "B";
}
else{
adder[0] = "AA"; adder[1] = "AB"; adder[2] = "AX"; adder[3] = "X"; rem = "B";
}
while((int)curr.size() < n-1){
string q = curr + adder[0] + curr + adder[1] + curr + adder[2] + curr + adder[3];
int resp = press(q);
if(resp == (int)curr.size()+2)
curr += string(1, adder[0][0]);
else if(resp == (int)curr.size()+1)
curr += string(1, adder[3][0]);
else
curr += rem;
}
if(curr[0] == 'A'){
adder[0] = "B"; adder[1] = "X"; rem = "Y";
}
else if(curr[0] == 'B'){
adder[0] == "A"; adder[1] = "X"; rem = "Y";
}
else if(curr[0] == 'X'){
adder[0] = "A"; adder[1] = "B"; rem = "Y";
}
else{
adder[0] = "A"; adder[1] = "B"; rem = "X";
}
if(press(curr+adder[0]) == n)
return curr + adder[0];
if(press(curr+adder[1]) == n)
return curr + adder[1];
return curr + rem;
}