lac

Time limit: 0.1s Memory limit: 4MB Input: lac.in Output: lac.out

O zonă mlăştinoasă are formă dreptunghiulară, având nln_l linii şi ncn_c 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 00, iar apa cu 11. 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 nln_l şi ncn_c separate de un spaţiu, reprezentând numărul de linii, respectiv de coloane ale zonei;
  • pe următoarele nln_l linii se află câte ncn_c valori binare separate de câte un spatiu, reprezentând configuraţia zonei (00 pentru uscat şi 11 pentru apă)

Date de ieșire

Fişierul lac.out va avea următoarea structură:

  • pe prima linie un număr natural minmin, care reprezintă numărul cerut de pontoane
  • pe următoarele minmin 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

  • 1nl1001 \leq n_l \leq 100
  • 1nc1001 \leq n_c \leq 100
  • 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 11.

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

Log in or sign up to be able to send submissions!