bun

Time limit: 0.3s Memory limit: 64MB Input: bun.in Output: bun.out

Un șir se numește bun dacă suma elementelor este egală cu numărul elementelor. Mai exact, un șir
x1,x2,,xkx_1, x_2, \dots, x_k se numește bun dacă x1+x2+x3++xk=kx_1 + x_2 + x_3 + \ldots + x_k = k.
Subsecvența [lr]\lbrack l \dots r \rbrack a unui șir x1,x2,xkx_1, x_2, \dots x_k este șirul format din valorile xl,xl+1,xl+2,...,xrx_l, x_{l+1}, x_{l+2}, . . . , x_r în această ordine.

Cerință

Se dă CC, NN și un șir a1,a2,,aNa_1, a_2, \dots, a_N de NN numere naturale. Răspunde la următoarele 3 cerințe:

  1. Dacă C=1C=1, trebuie să afișezi DA dacă șirul aa este bun și NU altfel.
  2. Dacă C=2C=2, trebuie să afișezi un șir b1,b2,,bNb_1, b_2, \dots, b_N cu proprietatea că numărul de subsecvențe bune din bb este cât de mare posibil. (Observați că șirul aa nu are nicio legătură cu această cerință)
  3. Dacă C=3C=3, trebuie să afișezi numărul de subsecvențe bune ale șirului aa.

Date de intrare

Pe prima linie a fișierului de intrare bun.in se află numărul CC. Pe a doua linie se află numărul NN. Pe a treia linie se află șirul a1,a2,,aNa_1, a_2, \dots, a_N.

Date de ieșire

Să se afișeze pe prima linie din fișierul bun.out răspunsul la cerința corespunzătoare.

Restricții și precizări

  • C{1,2,3}C \in \lbrace 1,2,3 \rbrace
  • 2N100 0002 \leq N \leq 100 \ 000
  • 0ai30 \leq a_i \leq 3 (!!!)
# Puntaj Restricții
1 20 C=1C=1
2 20 C=2C=2
3 20 C=3C=3, N3000N \leq 3000
4 20 C=3C=3, ai1a_i \geq 1 pentru fiecare ii de la 11 la NN
5 20 C=3C=3, N>3000N > 3000

Exemplul 1

bun.in

1
6
0 1 2 0 3 0

bun.out

DA

Explicație

În primul exemplu, avem 0+1+2+0+3+0=60 + 1 + 2 + 0 + 3 + 0 = 6, deci șirul este bun.

Exemplul 2

bun.in

1
2
0 1

bun.out

NU

Explicație

În al doilea exemplu, avem 0+1=120 + 1 = 1 \neq 2, deci șirul nu este bun.

Exemplul 3

bun.in

2
2
2 3

bun.out

1 1

Explicație

În al treilea exemplu, putem forma șirul {1,1}\lbrace 1, 1 \rbrace care are 3 subsecvențe bune.

Exemplul 4

bun.in

3
8
1 1 2 0 0 0 1 3

bun.out

11

Explicație

În ultimul exemplu, avem 11 subsecvențe bune. Acestea sunt {(1,1)\lbrace (1, 1); (1,2)(1, 2); (1,4)(1, 4); (1,8)(1, 8); (2,2)(2, 2); (2,4)(2, 4); (2,8)(2, 8); (3,4)(3, 4); (3,8)(3, 8); (5,8)(5, 8); (7,7)}(7, 7) \rbrace

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