Fie o matrice de dimensiuni care conține numai valorile și . Căsuțele marcate cu sunt inaccesibile, în timp ce căsuțele marcate cu sunt accesibile.
Gimi se va afla inițial într-o căsuță marcată cu din această matrice, poziția ei nefiind însă cunoscută nouă. Lui Gimi îi putem da instrucțiuni de tipul: deplasează-te în căsuța . Regulile sunt următoarele:
- Gimi se poate deplasa numai în căsuțe marcate cu .
- Gimi se poate deplasa numai în căsuțe vecine cu cea în care se află. Căsuțele vecine cu sunt (cât timp sunt în matrice): , , și .
Dacă Gimi poate respecta toate regulile, atunci acesta se va deplasa în căsuța . Altfel, va rămâne pe loc.
Cerință
Scrieți un program care, cunoscând și , respectiv matricea, determină:
Cerința 1. O serie de instrucțiuni pe care, dacă Gimi o urmărește, indiferent de poziția lui inițială, ne va garanta faptul că va trece prin căsuța (marcată cu ).
Cerința 2. O serie de instrucțiuni pe care, dacă Gimi o urmărește, indiferent de poziția lui inițială, ne va garanta faptul că va trece prin toate celelalte căsuțe marcate cu .
Cerința 3. Cel mai mic număr astfel încât, primind o serie de instrucțiuni pe care, dacă Gimi o urmărește, indiferent de poziția lui de start, ne va garanta faptul că va trece prin toate celelalte căsuțe marcate cu , fără să fie necesară executarea instrucțiunilor de la la .
Date de intrare
Fișierul de intrare blind.in conține pe prima linie cerința care trebuie rezolvată, iar pe a doua linie două numere și , separate printr-un spațiu. Fiecare dintre următoarele linii conțin numere (care au valori numai de și ), separate prin câte un spațiu.
Dacă , următoarea linie va conține două numere și , separate printr-un spațiu, reprezentând coordonatele căsuței prin care Gimi va trebui să treacă.
Dacă , următoarea linie va conține un număr natural , reprezentând numărul de instrucțiuni. Următoarele linii vor conține câte două numere naturale și , separate printr-un spațiu, reprezentând instrucțiunile.
Date de ieșire
Fișierul de ieșire blind.out va conține pentru și seria de instrucțiuni, în ordinea executării lor. Pe fiecare linie se vor afla câte două numere . Pentru fișierul va conține numărul minim de instrucțiuni cerut.
Punctarea cerințelor 1 și 2
Punctajul obținut pe fiecare test depinde de numărul de instrucțiuni afișate.
Notăm cu numărul de căsuțe de din matrice, iar cu numărul de instrucțiuni afișate. Fie , iar dacă , sau dacă . Dacă , atunci punctajul obținut este . Pentru punctaj maxim, .
Se va acorda punctaj parțial dacă nu se respectă condițiile de mai sus. Se pot obține de la până la din punctaj. Procentajul se calculează după următoarea formulă:
Restricții și precizări
- ; Liniile și coloanele sunt numerotate începând cu .
- Pentru cerința 3, .
- Se garantează că, printr-un șir de instrucțiuni, se poate ajunge din orice căsuță marcată cu în oricare alta.
- Dacă Gimi se află inițial în căsuța , atunci se consideră că Gimi a trecut deja prin acea căsuță.
| # | Punctaj | Restricții |
|---|---|---|
| 1 | 5 | , și |
| 2 | 6 | , |
| 3 | 8 | , , și |
| 4 | 10 | , , și |
| 5 | 6 | , și |
| 6 | 6 | , |
| 7 | 6 | , , și |
| 8 | 14 | , , și |
| 9 | 5 | , , |
| 10 | 5 | , , |
| 11 | 5 | , , |
| 12 | 6 | , , |
| 13 | 7 | , |
| 14 | 11 | , |
Exemplul 1
blind.in
1
2 3
1 1 0
0 1 1
2 2
blind.out
1 2
2 2
Explicație
Pentru primul exemplu, analizăm fiecare poziție de start:
Toate traseele trec prin căsuța cel puțin odată. De precizat că, dacă Gimi s-ar fi aflat inițial în căsuța , atunci se consideră ca el deja a trecut prin acea căsuță. De asemenea, se observă că atunci când Gimi se află în celula și primește instrucțiunea de a se deplasa în celula , acesta practic stă pe loc.
Exemplul 2
blind.in
2
2 3
1 1 0
0 1 1
blind.out
1 2
2 2
2 3
2 2
1 2
1 1
Explicație
Pentru al doilea exemplu, analizăm fiecare poziție de start:
Toate traseele trec prin fiecare căsuță marcată cu cel puțin odată. Pentru fiecare traseu, apar subliniate căsuțele prin care Gimi trece pentru prima oară.
Exemplul 3
blind.in
3
2 3
1 1 0
0 1 1
7
1 2
2 2
2 3
2 2
1 2
1 1
1 2
blind.out
6
Explicație
Pentru al treilea exemplu, primele instrucțiuni ne garantează faptul că, indiferent de poziția de start a lui Gimi, el va vizita toate celelalte căsuțe. Efectuarea celei de-a instrucțiuni nu este necesară.