# PBinfo #2721 – Insert – Rezolvare C++

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

## Enunț

Cerința
Să se scrie funcția cu următorul antet:

void Insert(int a[], int &n)
Funcția primește ca parametri un vector a de numere naturale și n – numărul elementelor vectorului. Să se insereze după fiecare număr impar dublul său.

Restricții și precizări

după inserarea de elemente, este garantat că n va avea lungimea cel mult 800.000
inițial vectorul are cel puțin un element
0 ≤ a[i] ≤ 1.000.000, pentru orice i=0,n-1.
vectorul este indexat de la 0 la n-1
este garantat că vectorul a va putea memora în final toate elementele inițiale și cele inserate

Exemplu:
Dacă n = 5 și a = (22,5,7,8,11), atunci Insert(a, n) trebuie să obțină n = 8 și a = (22,5,10,7,14,8,11,22)

Important
Soluţia propusă va conţine definiţia funcţiei cerute. 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
void Insert(int a[], int &n) {
    int k = 0;
    for (int i = 0; i < n; i++)
        k = k + (a[i] % 2);
    int j = n + k - 1;
    for (int i = n - 1; i >= 0; i--) {
        if (a[i] % 2) a[j--] = 2 * a[i];
        a[j--] = a[i];
    } n = n + k;
}
```

## Resurse

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