This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
int query(string str);
string merge(vector<string>& sol, int lo, int hi){
if(lo == hi) return sol[lo];
int mi = (lo + hi) / 2;
string s1 = merge(sol, lo, mi);
string s2 = merge(sol, mi + 1, hi);
int curr = 0, dex = 0;
string res = "";
while(curr < (int)s1.size() && dex < (int)s2.size()){
string tmp = res + s2[dex] + s1.substr(curr);
int kene = res.size() + s1.size() - curr + 1;
if(query(tmp) == kene){
res += s2[dex++];
}
else{
res += s1[curr++];
}
}
if(curr < (int)s1.size()) res += s1.substr(curr);
if(dex < (int)s2.size()) res += s2.substr(dex);
return res;
}
string guess(int n, int s){
vector<string> sol(s, "");
for(int i = 0; i < s; i++){
do{
string ss = "a";
ss[0] += i;
sol[i] += ss;
}while(query(sol[i]) == (int)sol[i].size());
sol[i] = ((int)sol[i].size() == 1 ? "" : sol[i].substr(0, (int)sol[i].size() - 1));
}
return merge(sol, 0, s - 1);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |