제출 #1251394

#제출 시각아이디문제언어결과실행 시간메모리
1251394khoavn2008콤보 (IOI18_combo)C++20
100 / 100
8 ms484 KiB
#include "combo.h"

#include <bits/stdc++.h>
using namespace std;
#define ll int
#define ld double
#define endl '\n'
#define fi first
#define se second
#define pb push_back
#define REP(i,r) for(ll i=0,_r=(r);i<_r;i++)
#define FOR(i,l,r) for(ll i=(l),_r=(r);i<=_r;i++)
#define FORE(i,v) for(__typeof((v).begin()) i=(v).begin();i!=(v).end();i++)
#define FORNG(i,r,l) for(ll i=(r),_l=(l);i>=_l;i--)
#define MASK(i) (1LL<<(i))
#define BIT(x,i) (((x)>>(i))&1LL)
#define all(v) (v).begin(),(v).end()
#define size(v) ((ll)(v).size())

char ch[] = {'A', 'B', 'X', 'Y'};
string p = "";
// ll press(string s){}
char guess_one_char(){
    if(press(p + "A" + p + "B") > size(p)){
        if(press(p + "A") > size(p))return 'A';
        return 'B';
    }else{
        if(press(p + "X") > size(p))return 'X';
    }
    return 'Y';
}
string guess_sequence(int n) {
    p += guess_one_char();
    vector<char> d;
    for(char x : ch)if(p[0] != x)d.pb(x);
    FOR(i,2,n - 1){
        ll tmp = press(p + d[0] + p + d[1] + d[0] + p + d[1] + d[1] + p + d[1] + d[2]);
        if(tmp == size(p)){
            p += d[2];
        }
        if(tmp == size(p) + 1){
            p += d[0];
        }
        if(tmp == size(p) + 2){
            p += d[1];
        }
    }
    if(size(p) != n)p += guess_one_char();
    return p;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...