Submission #251363

#TimeUsernameProblemLanguageResultExecution timeMemory
251363errorgornPassword (RMI18_password)C++14
100 / 100
247 ms528 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define ii pair<int,int>
#define fi first
#define se second

#define rep(x,s,e) for (auto x=s;x!=e;x++)
#define sz(x) (int) (x).size()
#define all(x) (x).begin(),(x).end()

#define si pair<int,string>

priority_queue<si,vector<si>,greater<si> > pq;

int query(string q);

string merge(string i,string j){
	string res=i;
	
	int idx=0;
	
	for (auto &it:j){
		while (true){
			res.insert(idx,1,it);
			
			if (query(res)==sz(res)){
				idx++;
				break;
			}
			
			res.erase(res.begin()+idx);
			idx++;
		}
	}
	
	return res;
}

string guess(int n,int s){
	rep(x,0,s){
		string st;
		rep(y,0,n) st+=(char)('a'+x);
		
		int temp=query(st);
		
		st="";
		rep(y,0,temp) st+=(char)('a'+x);
		
		pq.push(si(temp,st));
	}
	
	while (sz(pq)>1){
		string t1=pq.top().se;pq.pop();
		string t2=pq.top().se;pq.pop();
		
		string ss=merge(t1,t2);
		pq.push(si(sz(ss),ss));
	}
	
	return pq.top().se;
}
#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...