| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 110941 | CodeKracker | 콤보 (IOI18_combo) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "combo.h"
#include<bits/stdc++.h>
#define FOR(i,a,b) for (int i = a; i < b; i++)
#define FORD(i,a,b) for (int i = a; i >= b; i--)
using namespace std;
char gf(){
int c = press("AB");
if(c > 0){
int a = press("A");
if(a){
return 'A';
}else{
return 'B';
}
}else{
int x = press("X");
if(x){
return 'X';
}else{
return 'Y';
}
}
}
char gl(string ans,vector<char> vec){
int c = press(ans+vec[0]);
if(c == ans.length()+1){
return vec[0];
}
c = press(ans+vec[1]);
if(c == ans.length()+1){
return vec[1];
}
return vec[2];
}
std::string guess_sequence(int n) {
char f = gf();
vector<char> rem;
rem.push_back('A');
rem.push_back('B');
rem.push_back('X');
rem.push_back('Y');
rem.erase(f);
string ans = "";
ans += f;
FOR(i,1,n-1){
string cur = ans+rem[0]+ans+rem[1]+rem[0]+ans+rem[1]+rem[1]+ans+rem[1]+rem[2];
int c = press(cur);
if(c == ans.length()){
ans += rem[2];
}else if(c == ans.length()+1){
ans += rem[0];
}else{
ans += rem[1];
}
}
char l = gl(ans,rem);
ans += l;
return ans;
}
