Răspuns:
void Insert(int a[], int &n)
{
int i,k=0;
for (i=0; i<n; ++i)
if (a[i]%2) ++k;;
int j=n+k-1;
for (i=n-1; i>=0; --i)
{
if (a[i]%2) a[j--]=2*a[i];
a[j--]=a[i];
}
n=n+k;
}
Explicație:
Se parcurge mai întâi vectorul pentru a se determina k = numărul numerelor impare. De aici se obține faptul că la final lungimea vectorului va fi n+k. Se parcurge apoi vectorul a de la poziția n-1 către 0 și se depun valorile inițiale plus cele adăugate începând de la poziția n+k-1 către 0.