Submission #1022638

#TimeUsernameProblemLanguageResultExecution timeMemory
1022638Joshi503콤보 (IOI18_combo)C++14
5 / 100
1 ms388 KiB
#include <bits/stdc++.h>
#include "combo.h"
using namespace std;
// string res = "BAYXY";
// int press(string p){
// 	int j = 0;
// 	int tmp = 0;
// 	for(int i = 0; i < (int)p.size(); i++){
// 		if(p[i] == res[j]) j++;
// 		else j = 0;
// 		tmp = max(tmp, j);
// 	}
// 	cout << tmp << "\n";
// 	return tmp;
// }
string aux(string k, string ca){
	string ka=k;
	string k1=k;
	ka+=ca[0];
	ka+=k;
	ka+=ca[1];
	ka+=ca[0];
	ka+=k;
	ka+=ca[1];
	ka+=ca[1];
	ka+=k;
	ka+=ca[1];
	ka+=ca[2];
	int res=press(ka);
	res-= (int)k.size();
	if(res == 2){
		k1+=ca[1];
	}else if(res == 1){
		k1+=ca[0];
	}else{
		k1+=ca[2];
	}
	return k1;
}


string guess_sequence(int N){
	string ans="AB";
	string k="";
	if(press(ans) >= 1){
		ans="A";
		if(press(ans) == 1){
			k="A";
		}else{
			k="B";
		}
	}else{
		ans="X";
		if(press(ans) == 1){
			k="X";
		}else{
			k="Y";
		}
	}
	char car= k[0];
	string c="ABXY";
	string ca="aaa";
	int j=0;
	for(int i=0; i<4; i++){
		if(c[i]==car){
			continue;
		}else{
			ca[j]=c[i];
			j++;
		}
	}
	for(int i=1; i<N-1; i++){
		k=aux(k,ca);
	}
	ans=k;
	string k1=k;
	k1+=ca[0];
	k1+=k;
	k1+=ca[1];
	if(press(k1) == (int)k.size() +1){
		k1=k;
		k1+=ca[0];
		if(press(k1) == (int)k.size() +1){
			ans=k1;
		}else{
			ans+=ca[1];
		}
	}else{
		ans+=ca[2];
	}
	// cout << ans << "\n";
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...