Crucigramas


Submit solution

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

Author:
Problem type
Allowed languages
C, C++, Java, Pascal

Como a todas las vacas, a Bessie la vaca le gusta resolver crucigramas. Desafortunadamente, su hermana Elsie ha derramado leche encima de su libro de crucigramas, borrando el texto y haciendo difícil que ella vea donde comienza la pista. Es su tarea ayudar a Bessie a recuperar la numeración de las pistas.

Se le da un crucigrama sin números de pistas como una cuadrícula N × M (3 \leq N \leq 50, 3 \leq M \leq 50). Algunas de las celdas estarán libres (típicamente de color blanco) y algunas estarán bloqueadas (típicamente de color negro). Dada esta distribución, la numeración de las pistas es un proceso simple que sigue dos pasos lógicos:

Paso 1: Determinamos si cada celda comienza una pista horizontal o vertical. Si una celda comienza una pista horizontal, su celda vecina a la izquierda debe estar bloqueada o estar fuera de la cuadrícula del crucigrama y las dos celdas a su derecha deben estar libres (esto es, una pista horizontal puede representar únicamente una palabra de tres o más caracteres). Las reglas para una celda que comience una pista vertical son análogas: la celda encima debe estar bloqueada o fuera de la cuadrícula, y las dos celdas debajo deben estar libres.

Paso 2: Asignamos un número a cada celda que comience una pista. Se asignan números a las celdas secuencialmente comenzando con 1 en el mismo orden en que usted leería un libro; a las celdas en la fila superior se le asignan números de izquierda a derecha, luego la segunda fila, etc. Solamente se asignan números a celdas que comiencen pistas.

Por ejemplo, considere la siguiente cuadrícula, donde '.' indica una celda libre y '#' una celda bloqueada.

...
#..
...
..#
.##

Las celdas que pueden comenzar una pista horizontal o vertical están marcadas con '!' a continuación:

!!!
#..
!..
..#
.##

Si asignamos números a estas celdas, obtenemos lo siguiente:

123
#..
4..
..#
.##

Note que los crucigramas descritos en los datos e entrada pueden no satisfacer las restricciones típicas de los crucigramas publicados. Por ejemplo, algunas celdas libres podrían no ser parte de ninguna pista.

Entrada

La primera línea de la entrada contendrá N y M separados por un espacio.

Cada una de las siguientes N líneas de la entrada describirán una fila de la cuadrícula. Cada una contiene M caracteres, que son o '.' (una celda libre) o '#' (una celda bloqueada).

Salida

En la primera línea de la salida, imprima el número de pistas.

En cada una de las restantes líneas, imprima la fila y la columna dando la posición de una sola pista (ordenadas como se describió anteriormente). La celda superior izquierda tiene posición (1,1). La celda inferior derecha tiene posición (N, M).

Ejemplo de Entrada

5 3
...
#..
...
..#
.##

Ejemplo de Salida

4
1 1
1 2
1 3
3 1

Comments

There are no comments at the moment.