El estudiante de secundaria Vasya recibió una cadena de longitud n como regalo de cumpleaños. Esta cadena consta de letras 'a' y 'b' solamente. Vasya denota la belleza de la cadena como la longitud máxima de una subcadena (subsecuencia consecutiva) que consiste en letras iguales.
Vasya no puede cambiar más de k caracteres de la cadena original. ¿Cuál es la máxima belleza de la cuerda que puede lograr?
Entrada
La primera línea de la entrada contiene dos enteros n y k (1 ≤ n ≤ 100 000, 0 ≤ k ≤ n): la longitud de la cadena y el número máximo de caracteres a cambiar.
La segunda línea contiene la cadena, que consta de letras 'a' y 'b' solamente.
Salida
Imprime el único entero: la belleza máxima de la cadena que Vasya puede lograr cambiando no más de k caracteres.
Ejemplos
Entrada
4 2
abba
Salida
4
Entrada
8 1
aabaabaa
Salida
5
Nota
En la primera muestra, Vasya puede obtener ambas cadenas "aaaa" y "bbbb".
En la segunda muestra, la respuesta óptima se obtiene con la cadena "aaaaabaa" o con la cadena "aabaaaaa".
Idea: Debido a que solo hay dos letras, las consideramos por separado, reemplazando 'a' por 'b' una y otra vez Al revés Al cambiar letras, el método principal es el método de la regla. Hay un poco más de detalles, y se necesita más consideración.
El código es el siguiente:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxx=1e5+100;
string s;
int n,k;
inline int fcs(char c)
{
int l=0,r=0;
int _max=0,sum=0;
while(r<n)
{
while(sum<=k&&r<n)
{
if(s[r]==c) sum++;
r++;
}
if(sum>k) r--,sum--;
_max=max(_max,r-l);
while(sum>=k&&l<n)
{
if(s[l]==c) sum--;
l++;
}
}
return _max;
}
int main()
{
scanf("%d%d",&n,&k);
cin>>s;
printf("%d\n",max(fcs('a'),fcs('b')));
return 0;
}
Vamos duro, ( o ) / ~