Pământul poate fi văzut ca o matrice cu linii și coloane, formate doar din cifrele și , unde reprezintă o insulă și reprezintă apă. După mai multe cercetări, s-a descoperit că fiecare insulă are nevoie de cel puțin poziții vecine cu apă pentru a se transforma și a deveni apă. Vecinii unei insule pot fi pe direcțiile N, S, E sau V. De asemenea, insulele au proprietatea de a avea o singură direcție specială (NE, SE, SV sau NV) care reprezintă un alt vecin pentru insula respectivă. Transformarea unei insule în apă durează un an.
Cerință
Știind insulele, numărul pentru fiecare insulă, precum și fiecare direcție specială:
- Să se determine câte insule se transformă în apă după un an.
- Pentru întrebări de forma , să se determine după câți ani insula aflată pe poziția va deveni apă. Dacă pentru nu este posibil, se va afișa
-1
.
Date de intrare
Pe prima linie din consolă se citesc 4 numere naturale, , , , , în această ordine, separate printr-un spațiu. Pe următoarele linii se citesc câte patru numere naturale , , , , separate printr-un spațiu, reprezentând coordonatele unei insule, numărul de vecini necesari pentru a se transforma și direcția specială a sa. Pentru , direcția este NE, pentru , SE, pentru , SV, pentru , NV. Dacă , atunci pe următoarea linie se citește numărul de întrebări , iar pe următoarele linii se citesc numerele și , separate printr-un spațiu.
Date de ieșire
Dacă , atunci în consolă se va afișa numărul de insule care se transformă în apă după un an. Dacă , atunci se va afișa răspunsul la fiecare din cele întrebări, pe câte o linie.
Restricții și precizări
- Există șansa ca unii vecini să se afle în afara Pământului. Aceștia nu vor fi luați în considerare. De exemplu, o insulă pe poziția care are este imposibil să devină apă deoarece vecinul din nord nu există.
- Se garantează că pentru fiecare întrebare din cele , reprezintă o poziție unde se află insulă.
- Coordonata reprezintă linia din matrice, iar coordonata reprezintă coloana din matrice.
- În coordonatele în care nu se află o insulă, se regasește apă.
- Pentru rezolvarea acestei probleme în limbajul C++, cercetătorii recomandă folosirea următoarelor linii de cod la începutul funcției
main()
:
ios::sync_with_stdio(0);
cin.tie(0);
# | Punctaj | Restricții |
---|---|---|
1 | 21 | |
2 | 23 | , |
3 | 56 | Fără alte restricții suplimentare |
Exemplul 1
stdin
1 4 5 9
1 1 1 2
1 2 2 3
1 5 2 1
2 2 4 3
3 4 2 1
4 2 3 1
4 3 2 2
4 4 4 4
4 5 0 1
stdout
7
Exemplul 2
stdin
2 4 5 9
1 1 1 2
1 2 2 3
1 5 2 1
2 2 4 3
3 4 2 1
4 2 3 1
4 3 2 2
4 4 4 4
4 5 0 1
5
1 1
1 5
2 2
4 3
4 4
stdout
1
1
1
2
3
Explicație
Imaginea de mai jos corespunde ambelor exemple. Numerele de pe o insulă reprezintă valoarea a insulei, săgețile reprezintă direcția specială a insulei, iar dacă valoarea a insulei este de culoare roșie, înseamnă că acea insulă reprezintă o întrebare din cele .
Să discutăm despre insula de pe poziția . Aceasta are , deci trebuie să aibă cel puțin 2 vecini care trebuie să fie apă pentru a se putea transforma și ea în apă. Direcția specială a acestei insule este în NE (nord-est). Astfel, vecinii apă a acestei insule sunt în N, NE, E și V. Cum , această insulă se va transforma în apă.
Insulele care se transformă în apă după primul an sunt: .