# PBinfo #4035 – NrSecvS – Rezolvare C++

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

## Enunț

Cerinţa
Scrieţi definiția completă a subprogramului C++ cu antetul:

long long NrSecvS(int a[], int n, int S)
care are trei parametri:  


a, prin care primeşte un tablou unidimensional de numere naturale nenule
n, numărul efectiv de elemente ale tabloului
S, un număr natural nenul

Subprogramul returnează numărul de secvențe din vector care au suma strict mai mare decât S.

Restricţii şi precizări

1 ≤ a[i] ≤ 1.000
1 ≤ S ≤ 10.000
2 ≤ n ≤ 1.000.000
numele subprogramului cerut este NrSecvS
parametrii sunt, în această ordine: a, n, S
elementele vectorului a sunt indexate de la 1
O secvență este formată din elemente aflate pe poziții consecutive în vector.

Exemplu:
Dacă n=4, a=(3,6,3,1), S = 10, funcția va returna 2, cele două secvențe de sumă strict mai mare decât 10 fiind 3,6,3 și 3,6,3,1.

Important
Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.

## Cod sursă C++

```cpp
long long NrSecvS(int a[], int n, int S)
{
    int i, j, suma = 0;
    long long nr = 0;
    j = 1;
    for (i = 1; i <= n; i++)
    {
        suma += a[i];
        while (suma > S)
        {
            nr += (n - i + 1);
            suma -= a[j];
            j++;
        }
    }
    return nr;
}
```

## Resurse

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