hanoi

Time limit: 0.1s Memory limit: 64MB Input: hanoi.in Output: hanoi.out

Un tânăr elev vietnamez a cumpărat de la magazin NN discuri. Pe fiecare disc este o etichetă pe care este scris diametrul acestuia exprimat în cm.

Tânărul vrea să așeze, în toate modurile posibile, cele NN discuri pe KK tije (numerotate de la 11 la KK), astfel încât, pe fiecare tijă, discurile să fie ordonate după diametru strict crescător, de la vârf la bază. În plus, nicio tijă nu trebuie să rămână liberă.

Două moduri de așezare sunt considerate distincte dacă există cel puțin o tijă pentru care valorile de pe etichetele discurilor așezate pe tija respectivă diferă în cele două așezări.

De exemplu, dacă avem N=3N = 3 discuri cu diametrele 1 1 31 \ 1 \ 3, acestea pot fi așezate pe K=2K = 2 tije în două moduri distincte:

Cerință

Scrieți un program care, cunoscând NN, KK, precum și diametrele celor NN discuri, determină numărul de moduri distincte de așezare a discurilor în condițiile din enunț (modulo 9904199041).

Date de intrare

Fișierul de intrare hanoi.in conține pe prima linie numerele naturale NN și KK, având semnificația din enunț. Pe cea de a doua linie se află NN numere naturale reprezentând diametrele celor NN discuri. Valorile scrise pe aceeași linie sunt separate prin câte un spațiu.

Date de ieșire

Fișierul de ieșire hanoi.out conține o singură linie pe care este scris rezultatul cerut.

Restricții și precizări

  • 1N2 0001 \leq N \leq 2 \ 000
  • 1KN1 \leq K \leq N
  • 11 \leq diametrele discurilor N\leq N
# Punctaj Restricții
1 7 K=2K = 2 și diametrele discurilor sunt distincte
2 7 K=NK = N și diametrele discurilor sunt distincte
3 37 Diametrele discurilor sunt distincte, fără alte restricții
4 7 K=2K = 2 și diametrele nu sunt distincte
5 7 K=NK = N și diametrele nu sunt distincte
6 35 Diametrele discurilor nu sunt distincte, fără alte restricții

Exemplul 1

hanoi.in

3 2
2 1 3

hanoi.out

6

Explicație

Cele 66 moduri distincte de așezare sunt:

modul tija 1 tija 2
1 11 2,32, 3
2 1,21, 2 33
3 1,31, 3 22
4 22 1,31, 3
5 2,32, 3 11
6 33 1,21, 2

Vezi Figura 2.

Exemplul 2

hanoi.in

4 3
4 1 1 3

hanoi.out

15

Explicație

Cele 1515 moduri distincte de așezare sunt:

modul tija 1 tija 2 tija 3
1 11 11 3,43, 4
2 11 1,31, 3 44
3 11 1,41, 4 33
4 11 33 1,41, 4
5 11 3,43, 4 11
6 11 44 1,31, 3
7 33 11 1,41, 4
8 33 1,41, 4 11
9 44 11 1,31, 3
10 44 1,31, 3 11
11 1,31, 3 11 44
12 1,31, 3 44 11
13 1,41, 4 11 33
14 1,41, 4 33 11
15 3,43, 4 11 11

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