O tablă pătratică este formată din celule pătrate, identice ca dimensiune, grupate pe linii şi coloane numerotate de la la . Din oricare celulă aflată la linia şi coloana , se poate face o deplasare doar spre celula vecină sau , dacă aceasta există. În interiorul a celule ale acestei matrice s-a așezat câte un jeton.
Numim drum pe această tablă, orice succesiune de celule parcurse conform regulii de deplasare descrisă anterior. Lungimea unui asemenea drum este egală cu numărul de celule parcurse.
Cerinţă
Cunoscând dimensiunea tablei , numărul total de jetoane şi două numere naturale şi , să se determine un număr , reprezentând numărul de drumuri distincte modulo de lungime care pornesc din celula şi care conţin fiecare câte jetoane.
Date de intrare
Fişierul de intrare drumuri.in
conţine pe prima linie patru numere naturale , , , separate prin câte un spaţiu, cu semnificația descrisă anterior.
Pe fiecare dintre următoarele linii, se găsesc câte două numere naturale , separate printr-un spaţiu, reprezentând linia şi coloana pe care se găseşte un jeton.
Date de ieșire
Pe prima linie a fişierului drumuri.out
se va scrie un singur număr natural reprezentând numărul de drumuri modulo care pornesc din celula , au lungimea şi trec prin celule care conțin jetoane.
Restricții și precizări
- Două drumuri se consideră distincte dacă diferă prin cel puţin o celulă.
- Într-o celulă se găsește cel mult un jeton.
Exemplul 1
drumuri.in
3 4 3 4
1 1
1 3
2 2
2 3
drumuri.out
3
Explicație
Sunt drumuri de lungime care conțin jetoane:
- ;
- ;
- .
Exemplul 2
drumuri.in
4 5 2 4
1 2
2 1
1 3
3 2
4 3
drumuri.out
5
Explicație
Sunt drumuri de lungime care conțin jetoane:
- ;
- ;
- ;
- ;
- .