Răspuns :
Răspuns:
#include <iostream>
using namespace std;
int main()
{
int u[1000], v[1000], m, n, i, j, a[2000], k = 1, aux;
// citirea primului sir de elemente
cin >> m;
for (i = 1; i <= m; i++)
cin >> u[i];
// citirea celui de-al doilea sir de elemente
cin >> n;
for (j = 1; j <= n; j++)
cin >> v[j];
// sortarea crescatoare a primului sir
for (i = 1; i<m; i++)
{
for (j = i + 1; j <= m; j++)
{
if (u[i]>u[j])
{
aux = u[i];
u[i] = u[j];
u[j] = aux;
}
}
}
// sortarea crescatoare a celui de-al doilea sir
for (i = 1; i<n; i++)
{
for (j = i + 1; j <= n; j++)
{
if (v[i]>v[j])
{
aux = v[i];
v[i] = v[j];
v[j] = aux;
}
}
}
i = 1;
j = 1;
while (i <= m && j <= n)
{
if (u[i]<v[j])
a[k++] = u[i++];
else
{
if (u[i]>v[j])
a[k++] = v[j++];
else
{
a[k++] = u[i++];
j = j + 1;
}
}
}
while (i <= m)
a[k++] = u[i++];
while (j <= n)
a[k++] = v[j++];
// afisarea vectorului obtinut conform cerintei
for (i = 1; i < k; i++)
cout << a[i] << " ";
return 0;
}
Explicație:
Pentru a sorta crescator/descrescator elementele a doi vectori (interclasare) trebuie ca acestia sa fie sortati, nu conteaza cum. In cazul acesa, vectorii au fost sortati crescator, dar puteau sa fie sortati si descrescator sau putea sa fie unul sortat crescator, iar celalalt descrescator. Dupa aceasta etapa, a inceput parcurgerea simultana a vectorilor (sau interclasarea), in care comparam elementele primului vector cu cele din celalalt vector. Astfel se creeaza un al treilea vector, sortat crescator, care trebuie afisat. De asemenea, intrucat dimensiunea maxima a vectorilor nu este precizata, am pus 1000 pentru fiecare, astfel ca dimensiunea maxima a celui de-al treilea vector este 1000+1000=2000.