- Time limit: 4.00 s
- Memory limit: 128 MB
Uolevi järjestää ystävilleen ohjelmointikilpailun. Kilpailussa on joukko tehtäviä, joista jokaisesta saa tietyn määrän pisteitä, ja kilpailijan kokonaispistemäärä on tehtyjen tehtävien yhteenlaskettu pistemäärä. Uolevi haluaa välttää tasapistetilanteita.
Arvioidakseen kuinka paljon mikäkin pisteytys tuottaa tasapistetilanteita, Uolevi tarvitsee ohjelman, jolla hän voi selvittää jokaista kokonaispistemäärää kohti, monellako eri tehtyjen tehtävien joukolla se on saavutettavissa.
Syöte
Syötteen ensimmäisellä rivillä on luku n, tehtävien lukumäärä. Toisella rivillä on luvut a_1, a_2, \ldots, a_n, tehtävistä saatavat pistemäärät.
Tuloste
Olkoon A = a_1 + a_2 + \ldots + a_n. Tulosta jokaista pistemäärää 0, 1, \ldots, A kohti yksi rivi, jossa lukee, monellako eri tehtäväjoukolla sen pistemäärän voi saavuttaa.
Rajat
- 1 \leq n \leq 60
- 1 \leq a_i \leq 100
Esimerkki
Syöte:
3 2 3 3
Tuloste:
1 0 1 2 0 2 1 0 1
Selitys:
Olkoon tehtävien nimet A, B ja C siten, että A:n pistemäärä on 2 ja B:n ja C:n pistemäärä on 3. Mahdolliset tehtäväjoukot ja niitä vastaavat pistemäärät ovat:
-> 0
A -> 2
B -> 3
AB -> 5
C -> 3
A C -> 5
BC -> 6
ABC -> 8
Nyt jos lasketaan, kuinka monta kertaa kukin pistemäärä esiintyy, saadaan tulosteen lukumäärät:
0: 1
1: 0
2: 1
3: 2
4: 0
5: 2
6: 1
7: 0
8: 1