Submission #1284594

#TimeUsernameProblemLanguageResultExecution timeMemory
1284594oscar1fPassword (RMI18_password)C++20
100 / 100
217 ms536 KiB
#include<bits/stdc++.h>
using namespace std;

int query(string s);

set<pair<int,string>> enCours;

string toutPareil(char carac,int taille) {
    string ans="";
    for (int i=0;i<taille;i++) {
        ans+=carac;
    }
    return ans;
}

string ajoute(char carac,string mot,int pos) {
    string ans;
    for (int i=0;i<pos;i++) {
        ans+=mot[i];
    }
    ans+=carac;
    for (int i=pos;i<(int)mot.size();i++) {
        ans+=mot[i];
    }
    return ans;
}

bool contient(string mot) {
    return query(mot)==(int)mot.size();
}

string guess(int n,int s) {
    for (int i=0;i<s;i++) {
        int nbMeme=query(toutPareil((int)'a'+i,n));
        if (nbMeme>0) {
            enCours.insert({nbMeme,toutPareil((int)'a'+i,nbMeme)});
        }
    }
    while ((int)enCours.size()>1) {
        auto it=enCours.begin();
        string prem=(*it).second;
        it=enCours.erase(it);
        string deuz=(*it).second;
        enCours.erase(it);
        int posDeuz=0;
        for (char c:prem) {
            while (!contient(ajoute(c,deuz,posDeuz))) {
                posDeuz++;
            }
            deuz=ajoute(c,deuz,posDeuz);
            posDeuz++;
        }
        enCours.insert({deuz.size(),deuz});
    }
    auto it=enCours.begin();
    return (*it).second;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...