제출 #767831

#제출 시각아이디문제언어결과실행 시간메모리
767831Alihan_8콤보 (IOI18_combo)C++17
100 / 100
27 ms500 KiB
#include "combo.h"

#include <bits/stdc++.h>

using namespace std;

#define all(x) x.begin(), x.end()
#define pb push_back
#define ln '\n'
//#define int long long

#ifndef EVAL
#include "grader.cpp"
#endif 

template <class _T>
bool chmin(_T &x, const _T &y){
    bool flag = false;
    if ( x > y ){
        x = y; flag |= true;
    }
    return flag;
}

template <class _T>
bool chmax(_T &x, const _T &y){
    bool flag = false;
    if ( x < y ){
        x = y; flag |= true;
    }
    return flag;
}

string guess_sequence(int N){
    string s;
    if ( press("AB") ){
        s += press("A") ? 'A' : 'B';
    }
    else{
        s += press("X") ? 'X' : 'Y';
    }
    if ( N == 1 ){
        return s;
    }
    vector <char> R;
    for ( auto i: "ABXY" ){
        if ( s[0] != i ){
            R.pb(i);
        }
    }
    for ( int i = 2; i < N; i++ ){
        auto f = press(s + R[0] + s + R[1] + R[0] + s + R[1] + R[1] + s + R[1] + R[2]);
        if ( f == i - 1 ){
            s += R[2];
        }
        else if ( f == i ){
            s += R[0];
        }
        else{
            assert(f == i + 1);
            s += R[1];
        }
    }
    if ( press(s + R[0]) == N ){
        s += R[0];
    }
    else if ( press(s + R[1]) == N ){
        s += R[1];
    }
    else{
        s += R[2];
    }
    return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...