entanglement

Time limit: 0.2s Memory limit: 128MB Input: entanglement.in Output: entanglement.out

Fie două şiruri AA şi BB de lungimi NN şi MM cu numere naturale mai mici sau egale decât KK. Un entanglement al celor două şiruri este o matrice CC de dimensiuni NMN \cdot M unde pentru toate perechile (i,j)(i,j) valoarea CijC_{ij} este egală fie cu AiA_i fie cu BjB_j.
Dându-se o matrice CC, câte perechi de şiruri (A,B)(A, B) există pentru care CC este un entanglement al celor două şiruri?

Cerinţă

Să se scrie un program care, pentru NN, MM, KK şi matricea CC cunoscute, determină:

  • dacă matricea CC poate fi un entanglement a două şiruri;
  • numărul de perechi de şiruri (A,B)(A, B) pentru care matricea CC reprezintă un entanglement.

Date de intrare

Fişierul de intrare entanglement.in conţine pe prima linie numerele TT, NN, MM şi KK, iar pe următoarele NN linii câte MM numere naturale reprezentând elementele din matricea CC.
Dacă T=1T=1 atunci se va stabili dacă matricea CC poate fi un entanglement, iar dacă T=2T=2 atunci se va determina numărul de perechi de şiruri (A,B)(A,B) pentru care CC reprezintă un entanglement.

Date de ieșire

Dacă T=1T=1, fişierul de ieşire entanglement.out va conţine cuvântul “DA” dacă CC poate fi un entanglement sau cuvântul “NU” în caz contrar.
Dacă T=2T=2, fişierul de ieşire entanglement.out va conţine un singur număr reprezentând restul modulo 1 000 000 0071 \ 000 \ 000 \ 007 al numărului de perechi de şiruri pentru care matricea CC reprezintă un entanglement.

Restricții și precizări

  • 1N,M3001 \leq N, M \leq 300
  • 1KNM1 \leq K \leq N \cdot M
  • Pentru teste în valoare de 3232 de puncte T=1T = 1.
  • Pentru teste în valoare de 3232 de puncte T=2T = 2 şi N,M60N, M \leq 60.
  • Pentru restul testelor, în valoare de 3636 de puncte, T=2T = 2.

Exemplul 1

entanglement.in

1 2 2 2
1 1
1 2

entanglement.out

DA

Explicație

O posibilă soluţie este AA = {1,11, 1} şi BB = {1,21, 2}.

Exemplul 2

entanglement.in

2 2 2 2
1 1
1 2

entanglement.out

5

Explicație

Cele 55 soluţii sunt:
(A={1,1},B={1,2})(A = \{1, 1\}, B = \{1, 2\})
(A={1,1},B={2,2})(A = \{1, 1\}, B = \{2, 2\})
(A={1,2},B={1,1})(A = \{1, 2\}, B = \{1, 1\})
(A={2,2},B={1,1})(A = \{2, 2\}, B = \{1, 1\})
(A={1,2},B={1,2})(A = \{1, 2\}, B = \{1, 2\})

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