Lencycles

Time limit: 1s Memory limit: 64MB Input: lencycles.in Output: lencycles.out

Cerință

Se dau nn, kk și apoi kk numere naturale. Se cunoaște că suma acestor kk numere este nn. Să se determine câte permutări de lungime nn există cu proprietatea că acestea au exact kk cicli, iar lungimile acestor cicli sunt exact numerele date.
Un ciclu se definește ca un subset al permutării în care elementele schimbǎ locurile unele cu altele. Exemplu: {4,2,1,3}\{4, 2, 1, 3\}, permutarea conține 22 cicli (4,1,3)(1431)(4, 1, 3) (1 \rightarrow 4 \rightarrow 3 \rightarrow 1) și (2)(2).

Date de intrare

Pe prima linie a fișierului de intrare lencycles.in se găsesc două numere întregi, nn și kk.
Pe a doua linie se află cele kk numere reprezentând lungimile ciclilor.

Date de ieșire

Fișierul de ieșire lencycles.out va conține un singur număr întreg reprezentând numărul de permutări cerut, modulo 109+710^9+7.

Restricții și precizări

  • Pentru teste in valoare de 18 de puncte, 1n10 \leq n \leq 10;
  • Pentru alte teste in valoare de 42 de puncte, 1n1000 \leq n \leq 1000 și se garantează că lungimile ciclilor vor fi numere distincte;
  • Pentru alte teste in valoare de 21 de puncte, 1n100 000 \leq n \leq 100 \ 000 și se garantează că lungimile ciclilor vor fi numere distincte;
  • Pentru alte teste in valoare de 19 de puncte, 1n100 000 \leq n \leq 100 \ 000;

Exemplu

lencycles.in

3 2
1 2

lencycles.out

3

Explicație

Avem de determinat câte permutări de lungime 33 au 22 cicli, unul de lungime 11 și unul de lungime 22.
Sunt în total 66 permutări de lungime 33. Dintre acestea, doar permutările (2,1,3)(2, 1, 3), (3,2,1)(3, 2, 1) și (1,3,2)(1, 3, 2) au exact 22 cicli, unul de lungime 11 și unul de lungime 22.

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