Submission #1142644

#TimeUsernameProblemLanguageResultExecution timeMemory
1142644xcalimarCombo (IOI18_combo)C++20
0 / 100
19 ms408 KiB
#include <bits/stdc++.h>
#include "combo.h"
#define REP(i, a, b) for(int i = a; i<b; i++)
#define all(v) v.begin(), v.end()
#define i64 long long
using namespace std;

const i64 MOD = 1000000007;

string guess_sequence(int n){
    //char a = 'A', b = 'B', x = 'X', y = 'Y';
    vector<string> a = {"A", "B", "X", "Y"};
    vector<string> c;
    string s = "";
    string f = "";
    string test = "AB";
    int ans = press(test);
    cout.flush();
    if(ans == 0){
        ans = press("X");
        cout.flush();
        if(ans == 0){
            s += 'Y';
            f += 'Y';
        }
        else{
            s += 'X';
            f += 'X';
        }
    } else{
        ans = press("A");
        cout.flush();
        if(ans == 0){
            s += 'B';
            f += 'B';
        }
        else{
            s += 'A';
            f += 'A';
        }
    }
    REP(i, 0, 4){
        if(a[i] == f) continue;
        c.push_back(a[i]);
    }
    string t = "";
    while(s.size() < n-1){
        t += s + c[1];
        REP(i, 0, 3){
            t += s + c[0] + c[i];
        }
        ans = press(t);
        cout.flush();
        if(ans == 0){
            s += c[2];
        } else if(ans == 1){
            s += c[1];
        } else if(ans == 2){
            s += c[0];
        }
        t = "";
    }
    test = s + "AB";
    ans = press(test);
    cout.flush();
    if(ans == 0){
        test = s + "X";
        ans = press(test);
        cout.flush();
        if(ans == 0) s += 'Y';
        else s += 'X';
    } else{
        test = s + "A";
        ans = press(test);
        cout.flush();
        if(ans == 0) s += 'B';
        else s += 'A';
    }
    return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...