Submission #1296429

#TimeUsernameProblemLanguageResultExecution timeMemory
1296429Ekber_EkberCombo (IOI18_combo)C++20
97 / 100
8 ms480 KiB
#include "combo.h"
#include <bits/stdc++.h>
// #define int long long
#define endl "\n"
#define ff first
#define ss second
#define pb push_back
#define all(v) v.begin(), v.end()
using namespace std;
vector <string> v = {"A", "B", "X", "Y"};

string guess_sequence(int n) {
    int first = -1;
    string p = "";
    for(int i = 0; i < v.size() - 1; i++){
        if(press(v[i]) > 0){
            p += v[i];
            first = i;
            break;
        }
    }
    if(p.size() == 0)p += v.back(), first = 3;
    if(p.size() == n)return p;
    vector < string > vv;
    for(int i = 0; i < 4; i++){
        if(i != first)
            vv.push_back(v[i]);
    }
    v = vv;
    while(p.size() < n - 1){
        string cur = "";
        cur += p;
        cur += v[0];
        cur += p;
        cur += v[1];
        cur += v[0];
        cur += p;
        cur += v[1];
        cur += v[2];
        cur += p;
        cur += v[1];
        cur += v[1];
        // cout << cur << endl;
        int sz = press(cur);
        if(sz == p.size()){
            p += v[2];
        }
        else if(sz == p.size() + 1){
            p += v[0];
        }
        else {
            p += v[1];
        }
    }
    for(int i = 0; i < 2; i++){
        string cur = p + v[i];
        if(press(cur) == n){
            return cur;
        }
    }
    string ans = p + v.back();
    // cout << ans << endl;
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...