Submission #199660

#TimeUsernameProblemLanguageResultExecution timeMemory
199660mohammedehab2002Password (RMI18_password)C++14
100 / 100
349 ms760 KiB
#include <bits/stdc++.h>
using namespace std;
pair<int,char> f[26];
int query(string s);
string guess(int n,int c)
{
	for (char a='a';a<'a'+c;a++)
	f[a-'a']={query(string(n,a)),a};
	sort(f,f+26);
	string ans="";
	for (int j=0;j<26;j++)
	{
		char a=f[j].second;
		int p=ans.size();
		string tmp=ans;
		for (int i=0;i<f[j].first;i++)
		{
			while (p>=15 && query(ans.substr(0,p-15)+string(i+1,a))<=p-15+i)
			p-=16;
			int st=max(p-15,0),en=p;
			while (st!=en)
			{
				int mid=(st+en+1)/2;
				if (query(ans.substr(0,mid)+string(i+1,a))>mid+i)
				st=mid;
				else
				en=mid-1;
			}
			tmp.insert(tmp.begin()+st,a);
			p=st;
		}
		ans=tmp;
	}
	return ans;
}
#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...