Fișierul intrare/ieșire | arhipelag.in, arhipelag.out | Sursă | ONI 2017 clasa a 9-a |
---|---|---|---|
Autor | Mihai Enache | Adăugată de | Tinca Matei • TincaMatei |
Timp de execuție pe test | 0.5 sec | Limită de memorie | 32768 KB |
Scorul tău | N/A | Dificultate | N/A |
Vezi soluțiile trimise | Statistici
Arhipelag (clasa a 9-a)
În regiunea Ionia a lumii grecești antice, regiune ce corespunde teritoriului actual al Mării Egee, există mai multe insule. Harta mării este reprezentată de o matrice de dimenisuni N x M, având valori de 1 și 0, iar fiecare element din matrice reprezintă o zonă de dimensiune 1 × 1 din mare. Liniile matricei sunt numerotate de la 1 la N, de sus în jos, iar coloanele de la 1 la M, de la stânga la dreapta. Astfel, colțul din stânga sus al matricei este asociat zonei (1, 1), iar colțul din dreapta jos corespunde zonei (N, M). Un element care conține valoarea 0 reprezintă faptul că în acea zonă se află apă. O insulă este determinată de un dreptunghi format în totalitate din valori de 1. Se garantează faptul că toate zonele care conțin valoarea 1 formează dreptunghiuri valide și că oricare două insule sunt separate de apă. De exemplu, Figura 1 de mai jos reprezintă o hartă validă, în timp ce Figura 2 și Figura 3 NU reprezintă o hartă validă.
Cerinta
Ionienii, fiind oameni practici, doresc construirea unui far-bibliotecă (așezat pe o platformă 1 × 1), într-o zonă acoperită de apă. Poziția platformei va fi aleasă într-o celulă C astfel încât suma distanțelor dintre toate insulele și C să fie minimă. Distanța dintre o celulă C și o insulă este definită ca fiind minimul dintre distanțele Manhattan dintre C și fiecare celulă care aparține insulei (distanța poate trece atât prin alte insule, cât și prin zone acoperite de apă). Distanța Manhattan dintre două celule aflate pe linia x1 și coloana y1, respectiv pe linia x2 și coloana y2, este definită ca |x1 – x2| + |y1 – y2|, unde |x| reprezintă valoarea absolută a lui x.
Date de intrare
Fișierul de intrare arhipelag.in conține, pe prima linie, valorile N și M, având semnificația din enunț. Următoarele N linii conțin câte M valori binare, separate de câte un spațiu, reprezentând harta mării.
Date de ieșire
Fișierul de ieșire arhipelag.out va conține o pereche de numere naturale, reprezentând linia si coloana celulei alese de ionieni pentru construcție. Dacă există mai multe soluții posibile, se va alege cea care are linia minimă. Dacă în continuare există mai multe soluții, se va alege cea care are coloana minimă.
Restricții
- Pentru test in valoare de 15 puncte, 1 ≤ N,M ≤ 50.
- Pentru alte teste in valoare de 20 de puncte, 1 ≤ N,M ≤ 300, iar numarul de insule din arhipelag nu depaseste 300.
- Pentru alte teste in valoare de 20 de puncte, 1 ≤ N,M ≤ 300.
- Pentru restul de teste, 1 ≤ N,M ≤ 1000.
- Se garanteaza ca exista cel putin o zona acoperita de apa.
Exemplu 1
arhipelag.in | arhipelag.out |
---|---|
7 7 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 |
2 3 |
Explicatie
Notând cu D(x1, y1, x2, y2) insula determinată de dreptunghiul având colțul stânga sus în (x1, y1) și colțul dreapta jos în (x2, y2), arhipelagul conține următoarele insule: D1(1, 2, 2, 2), D2(1, 4, 7, 4), D3(1, 6, 2, 7), D4(6, 1, 7, 2) și D5(6, 6, 7, 7). Notând cu dist(D) distanța dintre celula (2, 3) și
insula D, distanțele sunt următoarele: dist(D1) = min {|2 – 1| + |3 – 2|, |2 – 2| + |3 – 2|} = 1, dist(D2) = 1, dist(D3) = 3, dist(D4) = 5 și dist(D5) = 7.
Exemplu 2
arhipelag.in | arhipelag.out |
---|---|
4 4 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 |
1 2 |
Explicație
Pentru fiecare dintre celulele (1, 2), (2, 2), (3, 2), (4, 3) si (4, 4), distanța dintre celulă și singura insulă existentă în acest exemplu este aceeași. Se va alege cea care are linia minimă, iar în caz de egalitate se va alege cea care are coloana minimă. Astfel, celula (1, 2) reprezintă soluția.