Sandor

Time limit: 0.4s Memory limit: 256MB Input: sandor.in Output: sandor.out

Hajrá Szentgyörgy, hajrá Sepsi!

Se dă un șir vv cu NN elemente în ordine descrescătoare și un număr natural GG.

Se aplică algoritmul lui Sándor pe acest șir, implementarea sa în pseudocod fiind scrisă mai jos:

Algoritmul lui Sándor

Dându-se N, G, v[1], v[2], ..., v[N]
s <- 0
pentru i <- de la 1 la N execută
	dacă s + v[i] <= G atunci
		s <- s + v[i]

Rezultatul aplicării algoritmului lui Sándor este valoarea variabilei ss la finalul execuției.

Cerință

Pentru un set de date de intrare NN, GG și vv ale algoritmului lui Sándor, se dă un număr TT (egal cu 11 sau 22). Vom considera toate modurile în care se pot elimina TT elemente din șirul vv. De exemplu, dacă avem șirul v=[7,6,4,2,1]v = [7, 6, 4, 2, 1], pentru T=1T=1 o eliminare posibilă este a elementului de pe poziția 33, în urma căreia obținem șirul v=[7,6,2,1]v' = [7, 6, 2, 1].

Considerăm un șir ff cu G+1G+1 valori, (f0f_0, f1f_1, \ldots, fGf_G). Valoarea lui fif_i este egală cu numărul de moduri de a elimina exact TT elemente din șirul vv pentru a obține un șir vv', pentru care rezultatul aplicării algoritmului lui Sándor pentru NN, GG și vv' este egal cu ii.

Date de intrare

Pe prima linie a fișierului de intrare sandor.in se găsește un număr natural TT, cu semnificația din enunț. Pe a doua linie se găsesc numerele naturale NN și GG, separate printr-un spațiu. Pe a treia linie se găsesc NN numere naturale reprezentând valorile elementelor șirului vv, al ii-lea dintre acestea fiind valoarea lui viv_i (1iN1 \leq i \leq N).

Date de ieșire

În fișierul de ieșire sandor.out se vor afișa G+1G + 1 valori f0f_0, f1f_1, \ldots, fGf_G, separate printr-un spațiu, cu semnificația din enunț.

Restricții și precizări

  • 1T21 \leq T \leq 2;
  • 1N400 0001 \leq N \leq 400 \ 000;
  • 1G800 0001 \leq G \leq 800 \ 000;
  • 1viG1 \leq v_i \leq G;
  • Pentru T=1T = 1, se va elimina un element de pe poziția ii, cu 1iN1 \leq i \leq N. Două moduri de a elimina 11 element se consideră distincte dacă pozițiile elementului eliminat în cele două moduri sunt distincte.
  • Pentru T=2T = 2, pozițiile eliminate vor fi de forma (i,j)(i, j), cu 1i<jN1 \leq i < j \leq N. Două moduri de a elimina 22 elemente (i1,j1)(i_1, j_1) și (i2,j2)(i_2, j_2) se consideră distincte dacă i1i2i_1 \neq i_2 sau j1j2j_1 \neq j_2.
# Scor Restricții
1 6 T=1T = 1, N3 000N \leq 3 \ 000.
2 9 T=1T = 1, toate elementele șirului vv sunt distincte.
3 16 T=1T = 1.
4 12 T=2T = 2, 1N3 0001 \leq N \leq 3 \ 000.
5 16 T=2T = 2, toate elementele șirului vv sunt distincte.
6 15 T=2T = 2, N200 000,G400 000N \leq 200 \ 000, G \leq 400 \ 000.
7 26 T=2T = 2.

Exemplul 1

sandor.in

1
4 11
10 7 3 1

sandor.out

0 0 0 0 0 0 0 0 0 0 1 3 

Explicație

După eliminarea unui element, ss poate atinge valoarea 1010 o dată și valoarea 1111 de trei ori.

Exemplul 2

sandor.in

2
4 11
10 7 3 1

sandor.out

0 0 0 0 1 0 0 0 1 0 3 1 

Explicație

După eliminarea unei perechi de două numere, ss poate atinge valoarea 44 o dată, valoarea 88 o dată, valoarea 1010 de 33 ori și valoarea 1111 o dată.

Exemplul 3

sandor.in

1
7 20
4 4 4 2 2 1 1

sandor.out

0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 2 2 0 0 0 

Explicație

Observați că elementele șirului vv pot fi egale.

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