Submission #251436

#TimeUsernameProblemLanguageResultExecution timeMemory
251436lycPassword (RMI18_password)C++14
100 / 100
317 ms688 KiB
#include <bits/stdc++.h>
using namespace std;

#define TRACE(x) cerr << #x << " :: ";
#define _ << " " <<
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
#define RFOR(i,a,b) for(int i=(a);i>=(b);--i)
#define SZ(x) ((int)(x).size())

int query(string Q);

string solve(vector<string>& vec, int l, int r) {
	if (l == r) return vec[l];
	
	int m = (l+r)>>1;
	string x = solve(vec,l,m), y = solve(vec,m+1,r);
	
	string S = "";
	int i, j;
	for (i = 0, j = 0; i < SZ(x) && j < SZ(y);) {
		string T = S + y[j] + x.substr(i);
		int q = query(T);
		if (q == SZ(T)) S += y[j++];
		else S += x[i++];
	}
	if (i < SZ(x)) S += x.substr(i);
	if (j < SZ(y)) S += y.substr(j);
	return S;
}

string guess(int N, int S) {
	vector<string> vec;
	FOR(i,0,S-1){
		string s(N,'a'+i);
		int freq = query(s);
		vec.push_back(string(freq,'a'+i));
	}
	
	return solve(vec,0,SZ(vec)-1);
}
#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...