# PBinfo #4222 – CautaPoz – 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 CautaPoz(int a[], int n)
Subprogramul returnează poziția p (0 ≤ p < n - 1) cu proprietatea că sumele a[0]+a[1]+...+a[p] și a[p+1]+...+a[n-1] sunt cât mai apropiate (diferența în modul a acestor sume este minimă). Dacă există mai multe astfel de poziții, se va returna cea mai din stânga. De exemplu, dacă a = (4,-3,-6,7,1) atunci funcția va returna poziția 1, deoarece sumele 4-3 și -6+7+1 sunt cele mai apropiate.

Restricţii şi precizări

-100 ≤ a[i] ≤ 100
4 ≤ n ≤ 5.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 CautaPoz(int a[], int n)
{
    int i, p, s, stot, difMin;
    stot = 0;
    for (i = 0; i < n; i++)
        stot += a[i];
    p = s = 0;
    difMin = 2e9;
    for (i = 0; i < n - 1; i++)
    {
        stot -= a[i];
        s += a[i];
        if (difMin > abs(s - stot))
        {
            difMin = abs(s - stot);
            p = i;
        }
    }
    return p;
}
```

## Resurse

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