关于#重复数据#的问题,如何解决?

题目描述
给定两个整数可重复集合,求两个集合的交集。

输入
输入有两组数据,第一组的第一行为一正整数n,一下n个正整数ai(0 < i <= n)。

第二组的第一行为正整数m,以下m个正整数bi(0 < i <= m)。

其中 1 < n, m <= 32767 0 < ai, bi <= 32767

输出
输出一行,k个正整数,为两组数据构成集合{ai}和{bi}的交集。

输出按第二组数据出现的顺序输出,两数之间使用空格间隔,最后一个数无空格,重复数据只输出一次。

若交集为空,只输出一个0

样例输入
10
1 2 3 4 5 6 7 8 9 10
10
9 10 11 12 13 14 15 16 17 1
样例输出
9 10 1

有思路,但是时间超限

#include
void ab(int &i,int &n,int &m,int a[],int b[])
{
    scanf("%d",&n);
    for(i=0;iscanf("%d",&a[i]);
    }
    scanf("%d",&m);
    for(i=0;iscanf("%d",&b[i]);
    }    
}
int a[32767];
int b[32767];
int main()
{
    int i,j,n,m,k=0,flag=0;
    ab(i,n,m,a,b);
    for(i=0;ifor(j=0;jif(b[i]==a[j])
      {
        printf("%d ",b[i]);
        flag=1;
        break;
      }
    }
  }
  if(flag==0)
  {
      printf("%d",0);
  }
}

函数名随便定义的

参考一下
https://blog.csdn.net/weixin_50877746/article/details/113730601

各位大佬可以帮帮我吗