QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 1024 MB Total points: 10

#8411. Rompecabezas 3 [C]

Statistics

Bajtek adora jugar juegos móviles. Sin embargo, le irritan los anuncios frecuentes de otros juegos en los que la persona que juega lo hace muy mal, lo cual está diseñado para frustrar al espectador y generar el deseo de jugar. Uno de esos anuncios (que quizás ustedes mismos hayan tenido la oportunidad de ver) se quedó grabado en la memoria de Bajtek.

Dado que la inspiración se puede encontrar en cualquier parte, Bajtek decidió crear un problema basado en el juego anterior. Él elegirá un tablero de colores objetivo de dimensiones $n \times m$, y comenzará el juego con un tablero de $n \times m$ en el que ninguna casilla tiene color. En un movimiento, puede elegir una fila o una columna y pintar todas las casillas en ella con un color de su elección (nótese que esto le da más libertad que en el juego mostrado en las imágenes anteriores, donde las filas y columnas tenían colores predeterminados). Para formalizar un poco el problema, marcó todos los colores con letras mayúsculas del alfabeto inglés. ¿Podrás ayudarlo y escribir un programa que, para cada tablero que él proponga, proporcione una secuencia de movimientos que cree correctamente la disposición de colores objetivo? Puedes asumir que recibirás datos de entrada en los que este objetivo se puede alcanzar en un máximo de $n + m$ movimientos.

Entrada

La primera línea de la entrada estándar contiene dos números enteros $n$ y $m$ ($1 \leq n, m \leq 2\,000$), que representan la altura y el ancho del tablero, respectivamente.

En cada una de las siguientes $n$ líneas hay $m$ caracteres, cada uno de los cuales es una letra mayúscula del alfabeto inglés; el $j$-ésimo carácter en la $i$-ésima de estas líneas indica el color objetivo de la casilla situada en la $i$-ésima fila y la $j$-ésima columna del tablero.

Se garantiza que la disposición de colores dada se puede alcanzar con una secuencia de al menos $n + m$ movimientos descritos en el enunciado del problema.

Salida

La primera línea de la salida debe contener un número entero $r$ ($1 \leq r \leq n + m$), que representa el número de movimientos que deseas realizar. En cada una de las siguientes $r$ líneas debe haber una descripción del movimiento.

La descripción de un movimiento debe comenzar con el carácter 'R' o 'K', indicando si deseas pintar una fila o una columna (donde, por supuesto, 'R' significa fila y 'K' significa columna). Luego, después de un espacio simple, debe haber el número de la fila o columna que deseas pintar. Las filas se numeran de arriba a abajo con números del 1 al $n$, y las columnas de izquierda a derecha con números del 1 al $m$. A continuación, después de un espacio simple, debe haber una letra mayúscula del alfabeto inglés, que indica el color con el que deseas pintar la fila o columna seleccionada.

Ten en cuenta que no necesitas minimizar el número de movimientos; basta con que realices como máximo $n + m$.

Ejemplos

Entrada 1

5 5
AAPAA
APPAA
AAPAA
AAPAA
APPPA

Salida 1

10
R 1 Z
K 4 A
K 2 P
R 5 P
R 4 A
R 3 A
R 1 A
K 5 A
K 3 P
K 1 A

Entrada 2

2 3
AAA
PPP

Salida 2

2
R 2 P
R 1 A

Nota

Explicación del ejemplo: Si en el primer caso de prueba asumimos que la letra 'P' significa color verde, la letra 'A' significa color amarillo y la letra 'Z' significa color azul, entonces la secuencia de movimientos elegida pinta el tablero de la siguiente manera:

Figura 1. Explicación del ejemplo: secuencia de movimientos

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.