O zonă mlăştinoasă are formă dreptunghiulară, având linii şi coloane. Ea este formată din celule cu latura de o unitate. O parte din acestea reprezintă uscat, iar altele reprezintă apă, uscatul fiind codificat cu , iar apa cu . Se doreşte să se obţină un drum de pe malul de nord spre cel de sud, trecând doar pe uscat. 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. Deplasarea se poate face cu câte o celulă pe linie, pe coloană, sau pe diagonală.
Cerinţă:
Scrieţi un program care determină numărul minim de pontoane şi coordonatele acestora.
Date de intrare:
Fişierul lac.in
are următoarea structură:
- pe prima linie se află două numere naturale şi separate de un spaţiu, reprezentând numărul de linii, respectiv de coloane ale zonei;
- pe următoarele linii se află câte valori binare separate de câte un spatiu, reprezentând configuraţia zonei ( pentru uscat şi pentru apă)
Date de ieșire
Fişierul lac.out
va avea următoarea structură:
- pe prima linie un număr natural , care reprezintă numărul cerut de pontoane
- pe următoarele linii vom avea câte două numere naturale separate de câte un spaţiu, reprezentând coordonatele celor min pontoane (linie şi coloană).
Restricții și precizări
- Soluţia cu număr minim de pontoane nu este unică.
- Dacă există mai multe soluţii se va afişa una singură.
- Numerotarea liniilor şi coloanelor începe cu valoarea .
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