Submission #1087904

#TimeUsernameProblemLanguageResultExecution timeMemory
1087904ASN49KPassword (RMI18_password)C++14
100 / 100
187 ms1204 KiB
#include <bits/stdc++.h> using namespace std; int query(string str); //kind of a merge sort algorithm //log2(26)*2*n+26 operations but it's much better in practice if the test are random or we randomize string divide(int n,int l,int r) { if(l==r) { //number of apperances of a char return string(query(string(n,char('a'+l))) , char('a'+l)); } int m=(l+r)/2; string a=divide(n,l,m),b=divide(n,m+1,r),rez; while(a.size() && b.size()) { //the next postion of a char for the result is either from a or from b //we verify if position(a[0])<position(b[0]) if(query(rez+a[0]+b)==rez.size()+1+b.size()) { rez.push_back(a[0]); a.erase(a.begin()); } else { rez.push_back(b[0]); b.erase(b.begin()); } } //we add the remainings rez+=a; rez+=b; return rez; } string guess(int n, int s) { return divide(n,0,s-1); }

Compilation message (stderr)

password.cpp: In function 'std::string divide(int, int, int)':
password.cpp:20:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |         if(query(rez+a[0]+b)==rez.size()+1+b.size())
      |            ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#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...