# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1272798 | arkanefury | Combo (IOI18_combo) | C++20 | 0 ms | 0 KiB |
#include "combo.h"
#include <bits/stdc++.h>
#define pb push_back
#define F first
#define S second
#define ll long long
#define sz size()
#define int long long
#define FOR(x, n, m, d) for(int x = n; x <= m; x += d)
#define nikita ios_base::sync_with_stdio(0), cin.tie(0);
using namespace std;
string guess_sequence(int N) {
string p = "", S = "", str;
int cnt;
cnt = press("AB");
char st;
if(!cnt){
cnt = press("X");
if(cnt)st = 'X';
else st = 'Y';
}
else{
cnt = press("A");
if(cnt)st = 'A';
else st = 'B';
}
p += st;
if(N == 1){
return p;
}
cnt = press(p + 'A' + p + 'B');
if(cnt > 1){
cnt = press(p + 'A');
if(cnt > 1)p += 'A';
else p += 'B';
}
else{
cnt = press(p + 'X');
if(cnt > 1)p += 'X';
else p += 'Y';
}
if(N == 2){
return p;
}
FOR(i, 3, N, 1){
str = p;
char sk = str[str.sz-1];
char sp1, sp2;
if(st != 'A' && sk != 'A')sp1 = 'A';
if(st != 'B' && sk != 'B')sp1 = 'B';
if(st != 'X' && sk != 'X')sp1 = 'X';
if(st != 'Y' && sk != 'Y')sp1 = 'Y';
if(st != 'A' && sk != 'A' && sp1 != 'A')sp2 = 'A';
if(st != 'B' && sk != 'B' && sp1 != 'B')sp2 = 'B';
if(st != 'X' && sk != 'X' && sp1 != 'X')sp2 = 'X';
if(st != 'Y' && sk != 'Y' && sp1 != 'Y')sp2 = 'Y';
str += sp1;
str += st + p + sp2 + sp2;
str += st + p + sp2 + sp1;
str += st + p + sp2 + sk;
cnt = press(str);
if(cnt == p.sz + 2)p += sp2;
else p += sp1;
}
return p;
}