#include <string>
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
bool FattoDiUnaLettera(string parola)
{
char lettera=parola[0];
for (int i=1;i<parola.length()-1;i++)
{
if (lettera!=parola[i])
{
return false;
}
}
return true;
}
bool FattoDiDueLettere(string parola)
{
char PrimaLettera=parola[0];
char SecondaLettera=parola[1];
int lunghezza=parola.length();
if (lunghezza-1%2==0)
{
for (int i=0;i<parola.length()-1;i+=2)
{
if (PrimaLettera!=parola[i])
{
return false;
}
if (SecondaLettera!=parola[i+1])
{
return false;
}
}
}
else
{
return false;
}
return true;
}
string RisolviDueLettere(string parola,int K)
{
char PrimaLettera=parola[0];
char SecondaLettera=parola[1];
int indice;
if (PrimaLettera>SecondaLettera)
{
indice=0;
for (int i=0;i<K;i++)
{
parola.replace(indice,1,"");
indice+=2;
}
}
else
{
indice=1;
for (int i=0;i<K;i++)
{
parola.replace(indice,1,"");
indice+=2;
}
}
return parola;
}
string solve(string parola,int K)
{
string parola_giusta=parola,parola_da_salvare=parola;
for (;K>0;K--)
{
if (FattoDiUnaLettera(parola_da_salvare))
{
parola_da_salvare.replace(0,K,"");
return parola_da_salvare;
}
if (FattoDiDueLettere(parola_da_salvare))
{
RisolviDueLettere(parola_da_salvare,K);
return parola_da_salvare;
}
for (int i=0;i<parola_da_salvare.length()-1;i++)
{
parola=parola_da_salvare;
parola.replace(i,1,"");
if (parola>parola_giusta)
{
parola_giusta=parola;
}
}
parola_da_salvare=parola_giusta;
}
return parola_da_salvare;
}
int main(int argc, char** argv) {
string parola;
long int N;//lunghezza stringa
long int K;//numero di lettere da levare
cin>>N>>K;
cin>>parola;
cout<<solve(parola,K)<<endl;
return 0;
}
75/100 non riesco a rispettare tutte i case dell’ultima subtask qualcuno riesce ad aiutare?