#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
void intersection_set(int *a, int size_a, int *b, int size_b)
{
int i = 0, j = 0;
while (i < size_a && j < size_b)
{
if (a[i] == b[j])
{
printf("%d ", a[i]);
++i;
++j;
}
else if (a[i] < b[j])
++i;
else
++j;
}
printf("\n");
}
void union_set(int *a, int size_a, int *b, int size_b)
{
int i = 0, j = 0;
while (i < size_a && j < size_b)
{
if (a[i] == b[j])
{
printf("%d ", a[i]);
++i;
++j;
}
else if (a[i] < b[j])
{
printf("%d ", a[i]);
++i;
}
else
{
printf("%d ", b[j]);
++j;
}
}
while (i < size_a)
{
printf("%d ", a[i]);
++i;
}
while (j < size_b)
{
printf("%d ", b[j]);
++j;
}
printf("\n");
}
void difference_set(int *a, int size_a, int *b, int size_b)
{
int i = 0, j = 0;
while (i < size_a && j < size_b)
{
if (a[i] == b[j])
{
++i;
++j;
}
else if (a[i] < b[j])
{
printf("%d ", a[i]);
++i;
}
else
++j;
}
while (i < size_a)
{
printf("%d ", a[i]);
++i;
}
}
int main()
{
int n, m;
int a[1002] = { 0 }, b[1002] = { 0 };
scanf("%d", &n);
for (int i = 0; i < n; ++i)
scanf("%d", &a[i]);
scanf("%d", &m);
for (int i = 0; i < m; ++i)
scanf("%d", &b[i]);
qsort(a, n, sizeof(int), cmp);
qsort(b, m, sizeof(int), cmp);
intersection_set(a, n, b, m);
union_set(a, n, b, m);
difference_set(a, n, b, m);
return 0;
}
/**************************************************************
Problem: 1852
User: admin
Language: C++
Result: Accepted
Time:76 ms
Memory:1144 kb
****************************************************************/