Lista

Mirko ha recibido un regalo de compleaños de su tío en los Estados
Unidos – una lista doblemente enlazada (como se muestra en la figura)
con los números del 1 al N en orden creciente.

Mirko realiza dos tipos de movimientos en su nueva lista:

- Mover el nodo X justo delante del nodo Y.

- Mover el nodo X justo detrás del nodo Y.

[]

[]

[]

Mirko ha estado jugando durante horas con su nueva lista, escribiendo en
un trozo de papel todos los movimientos que hace. Al acabar, intenta
volver a dejar la lista como estaba, deshaciendo sus movimientos. Pero
descubre sorprendido que la información que se había guardado no es
suficiente para deshacer los movimientos que ha hecho: para cada
movimiento, sabe que un nodo acaba de ser puesto detrás (o delante) de
otro, pero no sabe dónde estaba antes del movimiento.

Ya que Mirko no puede deshacer todos los pasos que ha hecho, al menos sí
puede dejar la lista tal y como estaba. Conociendo los movimientos de
Mirko, haz un programa que calcule cuál es el mínimo número de
movimientos que es necesario para dejar la lista tal y como estaba.

Entrada

La primera línea contiene dos enteros, N y K (2 ≤ N ≤ 500000,
0 ≤ M ≤ 100000), con el número de nodos y el número de movimientos que
ha hecho Mirko.

Cada una de las siguientes M líneas contiene la descripción de un
movimiento de Mirko: el tipo (“A” o “B”) y dos enteros X e Y.

Salida

Escribe una línea con el mínimo número de movimientos.

Información del problema

Autoría: COCI06/07

Generación: 2026-01-25T12:20:32.573Z

© Jutge.org, 2006–2026.
https://jutge.org
