# PBinfo #4219 – Egalitate – Rezolvare C++

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

## Enunț

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

int Egalitate(int a[], int n)
Subprogramul returnează numărul minim de elemente care pot fi eliminate astfel încât fiecare număr rămas în vector să aibă aceeași frecvență de apariție. De exemplu, dacă a = (5,3,1,5,5,1,1,5) atunci funcția va returna 2, deoarece se poate elimina un 5 și un 3 și rămâne a=(1,5,5,1,1,5), ambele numere având acum frecvența 3.

Restricţii şi precizări

0 ≤ a[i] ≤ 1.000
2 ≤ n ≤ 10.000
elementele vectorului a sunt indexate de la 0
Puteți utiliza în rezolvare orice structură de date.

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
int Egalitate(int a[], int n)
{
    int i, fr[1001] = {0}, nrMin;
    int b[1001], k;
    for (i = 0; i < n; i++)
        fr[a[i]]++;
    k = 0;
    for (i = 0; i < 1001; i++)
        if (fr[i] > 0) b[k++] = fr[i];
    sort(b, b + k);
    nrMin = n - b[0] * k;
    for (i = 1; i < k; i++)
        nrMin = min(nrMin, n - b[i] * (k - i));
    return nrMin;
}
```

## Resurse

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