Submission #1222153

#TimeUsernameProblemLanguageResultExecution timeMemory
1222153dianaCombo (IOI18_combo)C++20
5 / 100
0 ms408 KiB
#include "combo.h"
#include <bits/stdc++.h>
using namespace std;

const int C = 4;
set<string> c = {"A", "X", "B", "Y"};
string X = "X", A = "A", B = "B", Y = "Y";

string ans = "";

void guess_first()
{
    if(press(A+X) >= 1)
    {
        if(press(A))
            ans += A;
        else
            ans += X;
    }
    else
    {
        if(press(Y))
            ans += Y;
        else
            ans += B;
    }
    c.erase(ans);
}

void guess_next(int k)
{
    string a[3];
    int i = 0;
    for(auto x: c)
        a[i++] = x;

    string p = ans + a[0] + a[0] +
               ans + a[0] + a[1] +
               ans + a[0] + a[2] +
               ans + a[1];
    int coins = press(p);
    if(coins == k+2)
        ans += a[0];
    else if(coins == k+1)
        ans += a[1];
    else
        ans += a[2];
}

void guess_last(int n)
{
    string a[3];
    int i = 0;
    for(auto x: c)
        a[i++] = x;

    if(press(ans + a[0]) == n)
        ans += a[0];
    else if(press(ans + a[1]) == n)
        ans += a[1];
    else
        ans += a[2];
}

string guess_sequence(int n)
{
    guess_first();
    for(int i=1; i<n-1; i++)
        guess_next(i);
    guess_last(n);

    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...