제출 #199657

#제출 시각아이디문제언어결과실행 시간메모리
199657mohammedehab2002Password (RMI18_password)C++14
100 / 100
436 ms780 KiB
#include <bits/stdc++.h>
using namespace std;
int 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));
	string ans="";
	for (char a='a';a<'a'+c;a++)
	{
		int p=ans.size();
		string tmp=ans;
		for (int i=0;i<f[a-'a'];i++)
		{
			while (p>=31 && query(ans.substr(0,p-31)+string(i+1,a))<=p-31+i)
			p-=32;
			int st=max(p-31,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...