taietura

Time limit: 0.2s Memory limit: 16MB Input: taietura.in Output: taietura.out

Fiind dat un șir VV format din NN numere întregi V1,,VNV_1, … , V_N, definim o tăietură în poziția pospos ca fiind o subsecvență care conține elementul de pe poziția pospos. Formal, tăieturile în poziția pospos sunt de forma Vk,Vk+1,...,Vpos,...,Vr1,VrV_k , V_{k+1}, ... , V_{pos} , ... , V_{r-1}, V_r pentru orice kk, 1kpos1 \leq k \leq pos și orice rr, posrNpos \leq r \leq N.

Valoarea unei tăieturi este suma tuturor elementelor care fac parte din tăietura respectivă.

Definim funcția MulT(pos)\text{MulT}(pos) ca fiind numărul de tăieturi în poziția pospos care au valoarea 00.

Cerinţă

Ioana, fiind foarte curioasă din fire, dar și foarte fascinată de această funcție numită MulT\text{MulT}, este foarte interesată în a afla rezultatul pentru MulT(i)\text{MulT}(i), unde 1iN1 \leq i \leq N.

Date de intrare

Fişierul de intrare taietura.in conţine pe prima linie un număr natural NN, reprezentând numărul de elemente din șirul VV. Următoarea linie va conține exact NN valori întregi despărțite prin câte un spațiu, și anume elementele șirului VV.

Date de ieșire

Fişierul de ieşire taietura.out va conţine pe prima linie NN numere naturale separate prin câte un spațiu, și anume valorile funcției MulT(i)\text{MulT}(i), unde 1iN1 \leq i \leq N.

Restricții și precizări

  • 1N100 0001 \leq N \leq 100 \ 000;
  • Orice element al șirului VV este mai mic sau egal în valoare absolută cu 10910^9;
  • Pentru teste în valoare de 2020 de puncte N100N \leq 100;
  • Pentru teste în valoare de încă 2020 de puncte N1 000N \leq 1 \ 000.

Exemplul 1

taietura.in

3
0 1 0

taietura.out

1 0 1

Explicație

Rezultatul pentru MulT(1)\text{MulT}(1) este 11 deoarece există o singură tăietură, și anume (0)(0) care are valoarea 00. Pentru MulT(2)\text{MulT}(2) rezultatul este 00 deoarece nu există nicio tăietură aplicată pe poziția 22 care să aibă valoarea 00. Rezultatul pentru MulT(3)\text{MulT}(3) este 11 deoarece există o unică tăietură, și anume (0)(0) care are valoarea 00.

Exemplul 2

taietura.in

6
2 -2 0 0 1 -1

taietura.out

4 4 6 6 4 4

Explicație

De exemplu, rezultatul pentru MulT(2)\text{MulT}(2) este 44 deoarece tăieturile formate din subsecvențele (2,2)(2, -2), (2,2,0)(2, -2, 0), (2,2,0,0)(2, -2, 0, 0), (2,2,0,0,1,1)(2, -2, 0, 0, 1, -1) au valoarea 00.

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