# PBinfo #3941 – CountSumS – Rezolvare C++

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

## Enunț

Cerința
Scrieți funcția care are antetul:

long long CountSumS(vector<int> &a, int s)
Funcția va returna numărul de perechi (a[i], a[j]) cu i < j și a[i] + a[j] = s.

Restricții și precizări

a conține cel puțin un element și cel mult 1.000.000
elementele vectorului sunt numere întregi din intervalul [-1.000.000.000, 1.000.000.000]
Puteți utiliza în rezolvare orice structură de date

Exemplu:
Dacă a = (8,2,3,8,7,5) și s = 10, atunci funcția va returna valoarea 3, perechile fiind (8,2), (2,8) și (3,7).

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

## Cod sursă C++

```cpp
long long CountSumS(vector<int> &a, int s)
{
    int n = a.size();
    if (n <= 1) return 0;
    unordered_map<int, int> M;
    M.clear();
    long long cnt = 0;
    for (int i = 0; i < n; i++)
    {
        if (M[s - a[i]] > 0) cnt += M[s - a[i]];
        M[a[i]]++;
    }
    return cnt;
}
```

## Resurse

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