数字 含む含まれない

n個の整数を含む数列Sと、q個の異なる整数を含む数列Tが与えられるとき、
Tに含まれる整数の中でSに「含まれない」ものを空白区切りで列挙し(c個の整数を含む数列Vとする)、
さらに個数cを出力しなさい。

入力: 1行目にn、2行目にSを表すn個の空白区切りの整数、3行目にq、4行目にTを表すq個の空白区切りの整数、および改行
出力: Vを空白区切りの数列として出力し(要素数0の場合は空行)、改行して、cを出力し、改行して終わること。
制約: n <= 10,000, q <= 500, 0 <= S,Tの要素 <= 1,000,000,000, Tの要素は互いに異なる

入力例1
5
1 2 3 4 5
3
3 6 1

出力例1
6
1
(改行して終わること)

入力例2
1
1
1
1

出力例2

0

解答は以下のソースコードになります。

#include <stdio.h>

int main(void){
    int i,n1,num,n2;
    int data1[10000],ans[10000],len=0;;
    
    scanf("%d",&n1);
    for(i=0;i<n1;i++){
        scanf("%d",&data1[i]);
    }
    scanf("%d",&n2);
    for(i=0;i<n2;i++){
        scanf("%d",&num);
        compNum(data1,num,ans,&len,n1);
    }
    if(len>0){
        printf("%d",ans[0]);
    }
    for(i=1;i<len;i++){
        printf(" %d",ans[i]);
    }
    printf("\n");
    printf("%d",len);
    
    
    
    
    
    return 0;
}

void compNum(int data[10000], int num, int ans[10000],int *len,int n1){
    int i=0,flag=0;;
    for(i=0;i<n1;i++){
        if(data[i]==num){
            flag=1;
            break;
        }
    }
    if(flag == 0){
        ans[*len] = num;
        (*len)++;
    }
    return;
}