| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1284590 | oscar1f | Password (RMI18_password) | C++20 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
using namespace std;
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);
}
enCours.insert({deuz.size(),deuz});
}
auto it=enCours.begin();
return (*it).second;
}
