Evolución


Submit solution

Points: 100 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, BrainF***, C, C#, C++, Dart, Go, Java, JS, Kotlin, Lua, Pascal, Perl, Prolog, Python, Scala, Swift, VB

Los científicos de IslaGrande tienen un vasto conocimiento sobre la información genética de un organismo almacenada en el ADN. Actualmente es difícil extraer el ADN de un organismo para descifrar el código y resaltar cualquier segmento interesante para futura investigación. En el círculo científico, descifrar significa la presentación de un código genético como una cadena consistente de caracteres 'A', 'C', 'T' y 'G', la cual describe completamente a este.

Los científicos tendrán mucho trabajo antes que puedan entender todos los secretos naturales ocultos en el ADN, sin embargo, muchos avanzan en esta dirección. Por ejemplo, desde hace tiempo se escuchan noticias de que es posible determinar el nivel de evolución de un organismo por un segmento de código particular. Ellos toman ADN, seleccionan un segmento de N nucleótidos y calculan un grado de complejidad. La complejidad alta del segmento seleccionado significa que el organismo ha pasado por más etapas de evolución.

La complejidad de un segmento se calcula como sigue:

  • Para el segmento de N nucleótidos, se considera todos los sub-segmentos consistentes de K nucleótidos consecutivos;
  • Para cada sub-segmento se calcula el número de nucleótidos que contiene de cada tipo (es decir, cuatro números describen la composición cuantitativa de nucleótidos en el segmento calculado);
  • La complejidad se define como el número de conjuntos de compuestos cuantitativos calculados. Dos conjuntos cuantitativos se consideran iguales si el número de nucleótidos correspondientes en algún sub-segmento son iguales.

Después de este descubrimiento, los científicos comenzaron a coleccionar grados de complejidad de ADN de diferentes organismos. Ellos tienen todas las cadenas de ADN necesarias, sin embargo, explorar cada cadena manualmente es un proceso muy lento. Ellos le pidieron a usted, gran programador, escribir un programa que les ayude a determinar rápidamente el grado de evolución del organismo por su ADN.

Entrada

La primera línea de la entrada contiene dos enteros N, K (1 \leq K \leq N \leq 100\,000) — el número de nucleótidos en el segmento de la cadena de ADN y la longitud de los segmentos por consideración, respectivamente.

La segunda línea contiene N caracteres correspondientes a la cadena de nucleótidos. Cada carácter es uno de: {'A', 'C', 'T', 'G'}.

Los números en las líneas están separados por un espacio.

Salida

La única línea de la salida debe contener un número — la complejidad del organismo.

Ejemplos

Entrada 1
5 1
ACGTA
Salida 1
4
Explicación 1

En el segmento dado hay 4 sub-segmentos diferentes de longitud uno.

Entrada 2
8 2
AACACGTA
Salida 2
5
Explicación 2

En este segmento hay 7 sub-segmentos de longitud 2: AA, AC, CA, AC, CG, GT, TA. Los sub-segmentos AC y CA tienen los mismos conjuntos cuantitativos, por tanto la complejidad es 5.


Comments


  • 1
    yan_cespedes06  commented on Jan. 17, 2024, 4:46 a.m.

    @josemagotrue esta pagina tiene muchos pequeños aspectos que pulir, ojala ese lo arreglen tambien, literalmente hoy en el concurso provincial de la habana pasamos algunas trabas por el tema de la pagina y los moviles..


  • 11
    Primervirgen  commented on Aug. 14, 2019, 6:49 a.m.

    Muy buena la recomendación de @josemagotrue deberían de hacerlo, de esa forma facilitaría mucho trabajo a algunos usuarios :)


  • 19
    josemagotrue  commented on Aug. 14, 2019, 6:43 a.m.

    Buenas, pienso q en los envios deberian poner la opción de subir archivos, xq en el telefono muchas veces no da la opcion de pegar(a mi nunca) y ahora q los datos moviles estan d moda es un problema. Es muy dificil poner eso?