O zonă mlăştinoasă are formă dreptunghiulară, având L
linii (numerotate de la 1
la L
) şi C
coloane (numerotate de la 1
la C
). Ea este formată din celule cu latura de o unitate. O parte din acestea reprezintă uscat, iar altele reprezintă apă, uscatul fiind codificat cu 0
, iar apa cu 1
. Se doreşte să se obţină un drum de pe malul de nord spre cel de sud, trecând doar pe uscat. Deplasarea se poate face cu câte o celulă pe linie, pe coloană, sau pe diagonală. Celulele cu apă pot fi transformate în uscat, paraşutând într-un loc cu apă câte un ponton (o plută) de dimensiunea unei celule. Deoarece paraşutarea este periculoasă, se doreşte să avem un număr minim de paraşutări.
Cerința
Scrieţi un program care determină numărul minim de pontoane şi coordonatele acestora.
Date de intrare
Fișierul de intrare lac.in
are următoarea structură:
- pe prima linie se află două numere naturale
L
şiC
separate de un spaţiu, reprezentând numărul de linii, respectiv de coloane ale zonei; - pe următoarele
L
linii se află câteC
valori binare separate de câte un spatiu, reprezentând configuraţia zonei (0
pentru uscat şi1
pentru apă)
Date de ieșire
Fișierul de ieșire lac.out
va avea următoarea structură:
- pe prima linie un număr natural
min
, care reprezintă numărul cerut de pontoane - pe următoarele
min
linii vom avea câte două numere naturale separate de câte un spaţiu, reprezentând coordonatele celormin
pontoane (linie şi coloană).
Restricții și precizări
1 ≤ L, C ≤ 100
- Soluţia cu număr minim de pontoane poate să nu fie unică. Dacă există mai multe soluţii, se va afişa una singură.
Exemplu:
lac.in
8 9 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
lac.out
2 4 5 7 8