Submission #1247858

#TimeUsernameProblemLanguageResultExecution timeMemory
1247858denislavCombo (IOI18_combo)C++20
30 / 100
8 ms460 KiB
# include <iostream>
# include <vector>
# include <algorithm>
# include <random>
using namespace std;
# include "combo.h"
//# include "grader.cpp"

mt19937 rng(1707);

string guess_sequence(int N)
{
    vector<char> letters={'A','B','X','Y'};
    string s;
    int l=0,r=letters.size()-1,lett=0;
    while(l<r)
    {
        int mid=(l+r)/2;
        string guess;
        for(int i=l;i<=mid;i++) guess.push_back(letters[i]);
        if(press(guess))
        {
            r=mid;
            lett=mid;
        }
        else
        {
            l=mid+1;
            lett=mid+1;
        }
    }
    s.push_back(letters[lett]);
    letters.erase(letters.begin()+lett);

    //cout<<"->"<<s<<endl;

    while((int)s.size()<N)
    {
        shuffle(letters.begin(),letters.end(),rng);

        //cout<<letters[0]<<" "<<letters[1]<<" "<<letters[2]<<endl;

        string guess=s;
        guess.push_back(letters[0]);guess.push_back(letters[1]);
        int resp=press(guess);
        if(resp==(int)guess.size()) s=guess;
        else if(resp==(int)s.size()+1) s.push_back(letters[0]);
        else
        {
            guess=s;
            guess.push_back(letters[1]);guess.push_back(letters[rng()%3]);
            resp=press(guess);
            if(resp==(int)guess.size()) s=guess;
            else if(resp==(int)guess.size()-1) s.push_back(letters[1]);
            else s.push_back(letters[2]);
        }

        //cout<<"->"<<s<<endl;
    }

    return s;
}

/*
ABXYY
*/

/*
YXX
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...