ACM 2016 - Round #2Ended |
Las cadenas de bits son cadenas que solo contienen 0s y 1s.
Fito tiene que ordenar una cadena de bits y la única operación que el puede hacer es intercambiar un par adyacente. Tu tarea es ayudarlo a encontrar la menor cantidad de operaciones que debe hacer para lograrlo.
La cadena inicial se representa simplemente por una cadena de bits y el objetivo se representa con una cadena de enteros que llamaremos código. Estos enteros significan las longitudes de los bloques de 0s y 1s que se deben obtener al final. Por ejemplo el código de “011100” es “1 3 2”. Es importante notar que hay dos posibles cadenas para un código determinado, una que empieza por “0” y otra que empieza por “1”. El objetivo, dada la cadena inicial y el código que se desea obtener, es cualquiera de las dos posibles cadenas que representan ese código.
Línea 1
: Dos enteros $N (1 \leq N \leq 15)$ y $M (1 \leq M \leq N)$. $N$ es la longitud de la cadena de bits y $M$ la cantidad de enteros en el código.
Línea 2
: En la segunda línea estará la cadena de bits.
Línea 3
: El código.
Se garantiza que la suma de los enteros del código es igual a la cantidad a la longitud de la cadena de bits y que existe forma de reordenarlos para obtener el código deseado.
Un entero que representa la menor cantidad de pasos que hacen falta.