# PBinfo #3627 – FAB – Rezolvare C++

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

## Enunț

Cerinţa
Scrieţi definiția completă a subprogramului  FAB, care primeşte prin cei 4 parametri a, n, b, m: 


a, un tablou unidimensional cu maximum 5000 de elemente întregi
n, un număr natural reprezentând numărul de elemente din tabloul a
b, un tablou unidimensional cu maximum 5000 de elemente întregi
m, un număr natural reprezentând numărul de elemente din tabloul b

Subprogramul returnează 1 dacă orice număr din vectorul b se poate scrie ca sumă a două numere aflate pe poziții diferite în a, sau 0 în caz că există cel puțin un număr din b care nu se poate scrie ca sumă de două numere aflate pe poziții diferite în a.

Restricţii şi precizări

-1.000.000.000 < a[i] ≤ 1.000.000.000, pentru orice i=0..n-1
-1.000.000.000 < b[i] ≤ 1.000.000.000, pentru orice i=0..m-1
numele subprogramului cerut este FAB
tablourile sunt indexate de la 0
se pot folosi orice funcții și orice structuri de date în rezolvare

Exemplu:
Dacă n=4, a=(-1,4,3,7), m=3, și b=(2,11,8), rezultatul va fi 0, deoarece valoarea 8 din vectorul b nu se poate scrie ca sumă de doi termeni aflați pe poziții diferite din a.

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 FAB(int a[], int n, int b[], int m)
{
    int i, j, k, x;
    sort(a, a + n);
    for (k = 0; k < m; k++)
    {
        x = b[k];
        /// cauta (a[i], a[j]) de suma x
        i = 0; j = n - 1;
        while (i < j && a[i]+a[j] != x)
            if (a[i] + a[j] < x) i++;
            else j--;
        if (i >= j) return 0;
    }
    return 1;
}
```

## Resurse

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