Ne aflăm pe Terra. Știm de la orele de geografie că planeta noastră este formată din zone cu apă și zone de uscat. Fiind programatori, vom reduce această lume la o matrice.
Fie matricea binară cu linii și coloane, unde:
- reprezintă o zonă cu apă,
- reprezintă o zonă de uscat.
O insulă este un grup de celule conectate prin oricare dintre cele direcții (Nord, Sud, Est, Vest, Nord-Vest, Nord-Est, Sud-Vest, Sud-Est). Cunoaștem numărul total de insule de pe Pământ, acestea fiind la număr.
Analog, un lac, un fluviu, o mare sau un ocean este un grup de celule conectate pe aceleași direcții. Pentru simplitate, aceste zone le vom numi lacuri.
Pe pământ trăiesc doi îndrăgostiți, Răzvan și Andreea. Aceștia se află pe insule diferite, astfel Răzvan pornește într-o expediție pentru a ajunge la jumătatea sa.
Traversarea apei este periculoasă, așa că Răzvan va înainta doar pe timpul zilei. Mai precis:
- Ziua poate traversa lacurile.
- Noaptea trebuie să se oprească pe o insulă.
Fiecare insulă are un număr cunoscut de stele vizibile pe cer noaptea. Andreea le adoră, așa că Răzvan îi va aduce cât mai multe.
De fiecare dată când ajunge pe o insulă, el va colecta toate stelele vizibile acolo, iar acea insulă nu va mai avea stele dacă Răzvan revine ulterior.
Odată ce ajunge la Andreea, călătoria sa se oprește și îi oferă toate stelele strânse până în acel moment.
Avem întrebări de forma: .
Pentru fiecare întrebare, trebuie să determinăm:
Care este numărul maxim de stele pe care Răzvan le poate colecta pornind de pe insula pe care acesta se află, care cuprinde coordonatele până la insula Andreei, insula care cuprinde coordonatele ?
Date de intrare
Pe prima linie din fișierul de intrare stars.in
se află patru numere întregi, și , având semnificația descrisă în enunț.
Următoarele linii conțin câte cifre, reprezentând valorile matricei binare .
Pe linia se află numere întregi, fiecare indicând numărul de stele de pe câte o insulă de pe Terra.
Începând cu linia , urmează linii, fiecare conținând patru numere întregi: și , reprezentând coordonatele îndrăgostiților.
Date de ieșire
Pentru fiecare întrebare, se va afișa pe câte o linie în fișierul stars.out
numărul maxim de stele pe care Răzvan le poate colecta pentru Andreea.
Restricții și precizări
- . Se garantează că există insule pe Terra.
- numărul de insule și lacuri
- numărul de stele de pe o insulă
- Dacă am ajuns pe insula Andreei, vom colecta toate stelele de pe insula ei, apoi îi vom dărui toate stelele colectate până în acel moment.
- Pentru a identifica insulele și a determina numărul de stele de pe fiecare dintre ele, vom atribui fiecărei insule coordonata sa minimă în ordine lexicografică. Astfel, prima insulă va fi cea care are cea mai mică coordonată în ordine lexicografică, a doua insulă va fi cea cu a doua cea mai mică coordonată în ordine lexicografică și așa mai departe.
# | Puncte | Restricții |
---|---|---|
1 | 10 | Există doar un lac pe toată harta |
2 | 15 | sau |
3 | 30 | , și numărul de insule și lacuri |
4 | 45 | Fără restricții suplimentare |
Exemplul 1
stars.in
7 9 3 4
0 1 1 0 1 0 0 0 0
1 1 1 1 0 1 1 0 0
0 1 0 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0
0 1 0 1 0 1 1 0 0
1 0 0 1 0 1 1 1 0
1 0 1 0 0 0 0 1 1
1 5 3 7
2 4 5 2
5 4 3 9
6 1 7 9
stars.out
16
16
16
Explicație
În figura alăturată au fost evidențiate insulele, respectiv lacurile.
Există insule, respectiv lacuri.
Dacă vrem să rezolvăm ultima întrebare, un răspuns corect ar fi să pornim de pe insula maro, fiind și insula lui Răzvan, apoi să intrăm pe insula de culoare roșie, apoi să intrăm pe insula de culoare portocalie, iar ultima insulă în care o să intrăm va fi cea de culoare gri, insula Andreei.
Exemplul 2
stars.in
9 9 3 3
1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 1
1 0 1 1 1 1 1 0 1
1 0 1 0 0 0 1 0 1
1 0 1 0 1 0 1 0 1
1 0 1 0 0 0 1 0 1
1 0 1 1 1 1 1 0 1
1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1
1 2 3
1 1 3 3
5 5 5 3
1 1 5 5
stars.out
3
5
6