Răspuns:
#include <iostream>
using namespace std;
int main() {
int i,j,n,m,a[100],b[1000];
cout<<"n="; cin>>n;
for(i=1;i<=n;i++) cin>>a[i];
cout<<"m= "; cin>>m;
for (i=1;i<=m;i++) cin>>b[i];
int k=m;
for(i=1;i<=n;i++) //parcurg elementele vectorului a
{int ok=1; //pp ca componenta curenta nu este in b
for(j=1;j<=k;j++) //parcurg elem lui b si daca gasesc a[i] in b
if (a[i]==b[j]) ok=0; //ok este 0
if (ok) //daca ok a ramas 1 (adica a[i] nu e in vector
{m++; b[m]=a[i];} //adaug inca o componenta la vectorul b: maresc m cu 1 si adaug a[i] la b
}
// In b voi avea reuniunea celor doi vectori
//o afisez:
for(i=1;i<=m;i++)
cout<<b[i]<<" ";
}
Explicație:
Am facut reuniunea direct in b, adaugand la elementele lui b elementele din a care nu se gaseau printre elementele lui b;
Am retinut val initiala a lui m in k pt a cauta elem din a printre elementele care erau initial in b (nu si in cele adaugate ulterior)
Algoritmul poate fi imbunatatit. Poti sa iti faci un vector separat pt reuniune, etc etc.