O tablă pătratică este formată din N x N
celule pătrate, identice ca dimensiune, grupate pe N
linii şi N
coloane numerotate de la 1
la N
. Din oricare celulă aflată la linia i
şi coloana j
, se poate face o deplasare doar spre celula vecină (i + 1, j)
sau (i, j + 1)
, dacă aceasta există. În interiorul a M
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ța
Cunoscând dimensiunea tablei N
, numărul total de jetoane m
şi două numere naturale L
şi K
, să se determine un număr d
, reprezentând numărul de drumuri distincte modulo 31607
de lungime L
care pornesc din celula (1, 1)
şi care conţin fiecare câte K
jetoane.
Date de intrare
Fişierul de intrare drumuri1.in
conţine pe prima linie patru numere naturale N m K L
separate prin câte un spaţiu, cu semnificația descrisă anterior.
Pe fiecare dintre următoarele m
linii, se găsesc câte două numere naturale x y
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 D
reprezentând numărul de drumuri modulo 31607
care pornesc din celula (1, 1)
, au lungimea L
şi trec prin K
celule care conțin jetoane.
Restricții și precizări
1 ≤ K ≤ N ≤ 250
1 ≤ m ≤ 10 000
1 ≤ L < 500
- Două drumuri se consideră distincte dacă diferă prin cel puţin o celulă.
- Într-o celulă se găsește cel mult un jeton.
Exemplu:
drumuri1.in
3 4 3 4 1 1 1 3 2 2 2 3
drumuri1.out
3
Explicație
Sunt 3
drumuri de lungime 4
care conțin 3
jetoane:
(1, 1), (1, 2), (1, 3), (2, 3)
(1, 1), (1, 2), (2, 2), (2, 3)
(1, 1), (2, 1), (2, 2), (2, 3)
Exemplu:
drumuri1.in
4 5 2 4 1 2 2 1 1 3 3 2 4 3
drumuri1.out
5
Explicație
Sunt 5
drumuri de lungime 4
care conțin 2
jetoane:
(1, 1), (1, 2), (1, 3), (1, 4)
(1, 1), (1, 2), (1, 3), (2, 3)
(1, 1), (1, 2), (2, 2), (3, 2)
(1, 1), (2, 1), (2, 2), (3, 2)
(1, 1), (2, 1), (3, 1), (3, 2)