# PBinfo #3799 – CountNum – Rezolvare C++

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

## Enunț

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

vector<int> CountNum(vector<int> &a, int S)
Funcția va returna un vector care să memoreze, în ordine crescătoare, un număr cât mai mare de numere din a care au suma mai mică sau egală cu S. Dacă există mai multe soluții se va returna vectorul care are suma elementelor minimă.

Restricții și precizări

a conține cel puțin un element
toate elementele vectorului a sunt pozitive
Puteți utiliza în rezolvare orice structură de date

Exemplu:
Dacă a = (3,4,0,7,2) și S=7, atunci funcția va returna vectorul cu valorile (0,2,3). Există de exemplu și soluția (0,3,4), dar soluția optimă este un vector cu suma elementelor 5, pe când al doilea vector are suma elementelor egală cu 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
vector<int> CountNum(vector<int> &a, int S)
{
    vector<int> b;
    sort(a.begin(), a.end());
    int n = a.size();
    for (int i = 0; i < n && a[i] <= S; i++)
    {
        S -= a[i];
        b.push_back(a[i]);
    }
    return b;
}
```

## Resurse

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