제출 #1344146

#제출 시각아이디문제언어결과실행 시간메모리
1344146MunkhErdeneCombo (IOI18_combo)C++17
100 / 100
8 ms484 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define ff first
#define ss second
#define _ << " " <<
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define ull unsigned long long
#define lll __int128
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define BlueCrowner ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define FOR(i, a, b) for (ll i = (a); i < (b); i++)
#define FORD(i, a, b) for (ll i = (a); i >= (b); i--)
#include "combo.h"

string guess_sequence(int n) {
    int a = press("AB");
    int b = press("XB");
    string s;
    char c;
    if(a == 1 && b == 1) c = 'B';
    else if(a >= 1) c = 'A';
    else if(b >= 1) c = 'X';
    if(a == 0 && b == 0) c = 'Y';
    s.pb(c);
    if(n == 1) {
        return s;
    }
    char let[] = {'A', 'B', 'X', 'Y'};
    vector<char> l;
    FOR(i, 0, 4) if(let[i] != c) l.pb(let[i]);
    FOR(i, 1, n - 1) {
        
        string cur = s + l[0] + l[0] + s + l[0] + l[1] + s + l[0] + l[2] + s + l[1];
        int x = press(cur);
        if(x == i + 2) s.pb(l[0]);
        if(x == i + 1) s.pb(l[1]);
        if(x == i) s.pb(l[2]);
    }
    int x = press(s + l[0]);
    if(x == n) {
        s.pb(l[0]);
        return s;
    }
    x = press(s + l[1]);
    if(x == n) {
        s.pb(l[1]);
        return s;
    }
    s.pb(l[2]);
    return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...