Submission #159402

#TimeUsernameProblemLanguageResultExecution timeMemory
159402MounirCombo (IOI18_combo)C++14
5 / 100
2 ms256 KiB
#include <bits/stdc++.h>
#include "combo.h"
using namespace std;

string chaineCur;

string chaineRecherche;
/*
int press(string s)
{
	int tailleMax = 0;
	for (int deb = 0; deb < (int)s.length(); ++deb)
	{
		int add = 0;
		while ( deb + add < (int)s.length() && add < (int)chaineRecherche.length() && s[add + deb] == chaineRecherche[add])++add;
		tailleMax = max(tailleMax, add);
	}
	//cout << tailleMax << endl;
	return tailleMax;
}*/

string resoudre(int tailleChaine)
{
	//Trouver la lettre numéro 1
	if (press("AB") >= 1)
	{
		if (press("A") == 1) chaineCur = "A";
		else chaineCur = "B";
	}
	else
	{
		if (press("X") == 1) chaineCur = "X";
		else chaineCur = "Y";
	}
	
	char dicoBase[4] = {'A', 'B', 'X', 'Y'};
	vector<char> dico;
	
	for (char i : dicoBase){
		if (i != chaineCur[0])
			dico.push_back(i);}
	
	//cout << dico[0] << " " << dico[1] << " " << dico[2] << endl;
	
	for (int idLettre = 1; idLettre < tailleChaine - 1; ++idLettre)
	{
		string toPress = chaineCur + dico[0]; //Si press(toPress) renvoie 1
		toPress += (chaineCur + dico[1] + dico[0]) + (chaineCur + dico[1] + dico[1]) + (chaineCur + dico[1] + dico[2]); 
		
		int resCur = press(toPress);
		
		if (resCur ==  idLettre + 1)
			chaineCur += dico[0];
		else if (resCur == idLettre + 2)
			chaineCur += dico[1];
		else
			chaineCur += dico[2];
		
	}
	
	//On trouve la dernière lettre
	string toPress = chaineCur + "A" + chaineCur + "B";
	if (press(toPress) == tailleChaine)
	{
		if (press(chaineCur + "A") == tailleChaine)chaineCur += "A";
		else chaineCur += "B";
	}
	else
	{
		if (press(chaineCur + "X") == tailleChaine)chaineCur += "X";
		else chaineCur += "Y";
	}
	//cout << chaineCur << endl;
	return chaineCur;
}

string guess_sequence(int N)
{
	return resoudre(N);
}
/*
int main()
{
	chaineRecherche = "XXYYABYABXAY";
	if(guess_sequence(chaineRecherche.length()) == chaineRecherche)cout<<"OUI";
	else
	cout<<"NON";
	return 0;
}*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...