trotuar

Time limit: 0.35s Memory limit: 32MB Input: trotuar.in Output: trotuar.out

Un trotuar de lungime NN şi lăţime LL trebuie pavat cu dale. Dalele sunt de diferite tipuri, dar din fiecare tip avem o cantitate nelimitată. Lungimea dalelor în cazul fiecărui tip este aceeaşi LL, iar lăţimea poate să fie o valoare dintre a1,a2,a3,,aka_1, a_2, a_3, \dots, a_k. Trotuarul are pe suprafaţa lui MM zone ocupate, care nu vor fi pavate. Aceste zone au de fiecare dată o formă pătratică de latură 11 (reprezentând locul unor stâlpi, cutii poştale, canale, etc.). Se cunosc coordonatele acestor MM puncte (x1,y1),(x2,y2),(xm,ym)(x_1,y_1), (x_2,y_2), \dots (x_m,y_m). (xx reprezintă coloana, yy reprezintă linia punctului).

În exemplele de mai jos vedem trei metode distincte de acoperire a unui trotuar de dimensiuni 636 \cdot 3 folosind două tipuri de dale: 131 \cdot 3, respectiv 232 \cdot 3, având trei zone ocupate pe trotuar, şi anume: (6,2),(3,1),(6,3)(6,2), (3,1), (6,3).

Cerință

Cunoscând dimensiunea trotuarului, tipurile de dale disponibile, şi coordonatele zonelor ocupate, să se determine numărul de pavări distincte posibile modulo 666 013666 \ 013.

Date de intrare

Fişierul trotuar.in conţine pe prima linie 44 numere naturale NN, LL, KK, şi MM separate prin câte un spaţiu, reprezentând lungimea şi lăţimea trotuarului, respectiv numărul tipurilor de dale şi numărul zonelor ocupate. Pe linia următoare avem cele KK lăţimi ale tipurilor de dale: a1,a2,a3,,aka_1, a_2, a_3, \dots, a_k separate prin câte un spaţiu.

Următoarele MM linii conţin câte două numere naturale separate prin spaţiu, reprezentând câte o coordonată (xi,yi)(x_i,y_i), pentru fiecare 1im1 \leq i \leq m ale zonelor ocupate.

Date de ieșire

Fişierul trotuar.out va conţine o singură linie, numărul pavărilor distincte modulo 666013.

Restricții și precizări

  • 0<N100 0000 < N \leq 100 \ 000
  • 0<KL2550 < K \leq L \leq 255
  • 0<a1,a2,a3,,akL0 < a_1, a_2, a_3, \dots, a_k \leq L sunt distincte două câte două
  • 0M4500 \leq M \leq 450
  • Pentru 20%20\% din teste M=0M = 0
  • Se garantează existenţa a cel puţin unei soluţii
  • Se recomandă folosirea întregilor pe 6464 de biţi pentru operaţia de înmultire.

Exemplu

trotuar.in

6 3 2 3
2 1
6 2
3 1
6 3

trotuar.out

4

Explicație

Sunt în total patru modalităţi distincte de a acoperi trotuarul. Trei dintre ele sunt cele din desenul de mai sus.

Log in or sign up to be able to send submissions!