Submission #1146993

#TimeUsernameProblemLanguageResultExecution timeMemory
1146993emptypringlescanPassword (RMI18_password)C++17
0 / 100
10 ms420 KiB
#include <bits/stdc++.h>
using namespace std;
int query(string s);

string guess(int n, int s){
  vector<int> ans;
  pair<int,int> num[s];
	string tst;
	for(int i=0; i<s; i++){
		tst="";
		for(int j=0; j<n; j++){
			tst+=(char)('a'+i);
		}
		num[i]={query(tst),i};
	}
	sort(num,num+s,greater<pair<int,int> >());
	for(int i=0; i<s; i++){
		int chr=num[i].second,nom=num[i].first;
		if(i<=32-__builtin_clz((int)ans.size())){
			for(int k=0; k<nom; k++){
				int aft=0;
				for(int j=0; j<i; j++){
					tst="";
					for(int a=0; a<=k; a++) tst+=(char)('a'+chr);
					for(int a=k+1; a<n; a++) tst+=(char)('a'+num[j].second);
					int yey=query(tst)-k-1;
					if(yey<0) return "a";
					aft+=yey;
				}
				ans.insert(ans.end()-aft,chr);
			}
		}
		else{
			for(int k=0; k<nom; k++){
				int lo=0,hi=(int)ans.size(),mid;
				while(lo<hi){
					mid=(lo+hi+1)/2;
					tst="";
					for(int j=0; j<mid; j++) tst+=(char)('a'+ans[j]);
					for(int j=0; j<=k; j++) tst+=(char)('a'+chr);
					if(query(tst)==(int)tst.length()) lo=mid;
					else hi=mid-1;
				}
				ans.insert(ans.begin()+lo,chr);
			}
		}
	}
	tst="";
	for(int i=0; i<n; i++) tst+=(char)('a'+ans[i]);
	return tst;
}
#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...