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 q);
int cnt[29];
string rec(int s, int e){
//printf("rec(%d, %d)\n", s, e);
if(s == e){
string temp = "";
for(int i = 0; i < cnt[s]; i ++){
temp += (char)('a'+s);
}
return temp;
}else{
int m = (s+e)>>1;
string str1 = rec(s, m);
string str2 = rec(m+1, e);
string res = "";
int indx1 = 0;
int indx2 = 0;
int len1 = str1.size();
int len2 = str2.size();
while(indx1 < len1 || indx2 < len2){
//printf("indx1=%d indx2=%d\n", indx1, indx2);
if(indx1 == len1){
res += str2[indx2++];
}else if(indx2 == len2){
res += str1[indx1++];
}else{
string temp = res + str1[indx1] + str2.substr(indx2, len2-indx2);
int qres = query(temp);
if(qres == (int)temp.size()){
res += str1[indx1++];
}else{
res += str2[indx2++];
}
}
}
return res;
}
}
string guess(int n, int s){
for(int i = 0; i < s; i ++){
string temp = "";
for(int j = 0; j < n; j ++){
temp += (char)('a'+i);
}
cnt[i] = query(temp);
}
return rec(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... |