# PBinfo #4233 – SecvDeSumaS – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Se dă un șir a1, a2, …, an de numere întregi și un număr întreg S. Să se determine numărul secvențelor nevide care au suma egală cu S.

Date de intrare
Programul citește de la tastatură de pe prima linie numerele n, S, iar de pe a doua linie numerele separate prin spații a1, a2, …, an.

Date de ieșire
Programul va afișa pe ecran numărul numărul secvențelor nevide care au suma egală cu S.

Restricții și precizări

1 ≤ n ≤ 1.000.000
-1000 ≤ ai ≤ 1000 pentru orice i=1..n
-1.000.000.000 ≤ S ≤ 1.000.000.000
O secvență nevidă este formată din unul sau mai multe elemente ale șirului aflate pe poziții consecutive.

Exemplu:
Intrare

13 -10
2 3 -11 1 -11 4 -8 10 -14 10 -5 4 -17
Ieșire

4
Explicație
Cele 4 secvențe de sumă S = -10 sunt: 
-11, 1
1, -11
2, 3, -11, 1, -11, 4, -8, 10
-11, 4, -8, 10, -14, 10, -5, 4

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
unordered_map<int, int> M;
int main()
{
    int n, i, suma, S, x;
    long long cnt;
    cin >> n >> S;
    cnt = suma = 0;
    M[0] = 1;
    for (i = 1; i <= n; i++)
    {
        cin >> x;
        suma += x;
        if (M.find(suma - S) != M.end())
            cnt += M[suma - S];
        M[suma]++;
    }
    cout << cnt << "\n";
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/4233)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/4233/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-4233/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
