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 ans="";
vector<pair<int,int>> res;
void dnc(int l,int r,int num,char c,int n,int rside){
//printf("dnc %d %d %d %c %d:\n",l,r,num,c,n);
if(num==0)return;
if(l==r){
res.push_back({l,num});
return;
}
int m=((l+r)>>1)+1;
string tmp=ans;
tmp.resize(m);
tmp+=string(min(num,n-rside-m)+rside,c);
int qres=query(tmp)-m-rside;
//cout<<tmp<<' '<<qres<<endl;
int lnum=num-qres;
int rnum=qres;
tmp.clear();
dnc(l,m-1,lnum,c,n,rnum+rside);
dnc(m,r,rnum,c,n,rside);
}
string guess(int n,int s){
for(int i=0;i<s;++i){
char c='a'+i;
//printf("%c\n",c);
int num=query(string(n,c));
dnc(0,ans.length(),num,c,n,0);
int off=0;
for(auto[pos,num]:res){
ans.insert(pos+off,num,c);
off+=num;
}
res.clear();
//cout<<ans<<endl;
}
return ans;
}
# | 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... |