# PBinfo #3798 – NrMinMaxAp – Rezolvare C++

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

## Enunț

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

int NrMinMaxAp(vector<int> &a)
Funcția va returna numărul care apare de cele mai multe ori în a. Dacă există mai multe numere care apar de număr maxim de ori, se va returna minimul dintre ele.

Restricții și precizări

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

Exemplu:
Dacă a = (1,2,2,1,1,7,5,7,5,7,7,5,5), atunci funcția va returna valoarea 5, care apare de 4 ori, la fel ca și 7, dar 5 este mai mic.

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
int NrMinMaxAp(vector<int> &a)
{
    unordered_map<int, int> M;
    int nrMaxAparitii = 0;
    int val = -1;
    for (int x : a)
    {
        M[x]++;
        if (nrMaxAparitii < M[x])
        {
            nrMaxAparitii = M[x];
            val = x;
        }
        else if (nrMaxAparitii == M[x])
            val = min(val, x);
    }
    return val;
}
```

## Resurse

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