# PBinfo #4224 – MaxMinDif1 – 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 MaxMinDif1(int a[], int n)
Subprogramul returnează numărul maxim de elemente care pot fi selectate astfel încât diferența dintre valoarea maximă și valoarea minimă a numerelor alese să fie de cel mult 1.

Restricţii şi precizări

-10000 ≤ a[i] ≤ 10000
1 ≤ n ≤ 20.000
elementele vectorului a sunt indexate de la 0
Puteți utiliza în rezolvare orice structură de date și orice funcție predefinită.

Exemplu
Dacă a = (1,-4,6,-5,-4,-5,2,2) și n = 8, atunci MaxMinDif1(a, n) = 4, elementele alese fiind -4,-5,-4,-5.

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 MaxMinDif1(int a[], int n)
{
    if (n <= 1) return n;
    int i, j, lgMax = 0;
    sort(a, a + n);
    j = 0;
    for (i = 0; i < n; i++)
    {
        while (a[i] - a[j] > 1)
            j++;
        lgMax = max(lgMax, i - j + 1);
    }
    return lgMax;
}
```

## Resurse

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