Надіслати розв'язок
Бали:
20,00 (partial)
Time limit:
1.0s
Memory limit:
256M
Input:
stdin
Output:
stdout
Author:
Problem type
Задається сітка кросворда розміром ~N \times M~. Деякі комірки порожні (на кросворді вони зазвичай білі), а деякі позначені решіткою (на кросворді вони чорні). На кросворді відсутні номери слів, і Вам їх треба відновити, використовуючи такі логічні кроки:
- крок 1: Для кожної комірки визначаємо, чи вона є горизонтальним загаданим словом, чи вертикальним. Щоб це було горизонтальне слово, то треба, щоб комірка зліва була чорною або межею кросворда, а дві клітинки справа були вільними - мінімальна довжина слова дорівнює 3. Правила для вертикального слова аналогічні: зверху має бути чорна клітинка або межа, а вниз - дві або більше вільних клітин.
- крок 2: Призначаємо кожній комірці номер, який починає слово, послідовно від 1 у тому порядку, в якому ми читаємо книгу. В першому рядку призначаємо числа зліва-направо, потім у другому і т.д. Числа призначаємо тільки тим коміркам, де починається слово.
Input
Перший рядок вхідного потоку містить цілі числа ~N, M~ (~3 \le N, M \le 50~)
Наступні ~N~ рядків містять по ~M~ символів: крапку або решітку.
Output
У вихідний потік у першому рядку вивести кількість загаданих слів.
Наступні рядки містять координати комірок із числами у порядку їх зростання. Верхня ліва комірка має координату (1,1), а права нижня - (~N,M~)
Sample Input 1
5 3
...
#..
...
..#
.##
Sample Output 1
4
1 1
1 2
1 3
3 1
Notes
Кросворд для прикладу буде таким:
123
#..
4..
..#
.##
Коментарі