Solução por Leonardo Paes
Conhecimento prévio necessário:
Para resolvermos este problema, utilizaremos a estrutura de dados Set do C++.
Inicialmente, ordenamos a string dada. Então, iremos inserir todos os primeiros elementos da string no set. Há dois casos a se considerar: todos esses caracteres são o mesmo, ou seja, , ou não.
Se tiver algum caractere que seja diferente, um jeito ótimo de minimizar a string máxima seria utilizando o maior caractere como resposta, ou seja, , pois a string que contém esse caractere será a máxima independente dos próximos caracteres utilizados, e colocar mais caracteres nessa string só pioraria a resposta mínima.
Se todos os primeiros caracteres forem iguais, é ótimo que todas as strings comecem com esse mesmo caractere. Para o resto da strings, devemos checar se os caracteres restantes são todos iguais. Se eles forem, deveremos distribui-los igualmente entre as strings, caso contrário, é ótimo colocar todos em uma mesma string.
Confira o código abaixo para melhor entendimento: