c++,很简单我却不会(数组标记)

小明和小强各有十张纸币。纸币面值有六种:100 50 20 1 5 1。小明
先给小强一张纸币,接着小强在已有的11张里给小明一张。请问经过两次交换后,小明手中的
总面额有多少种不同的可能。
【输入说明】
输入两行,第一行为小明手上十张纸币的面值,第一行为小强手上十张纸币的面值。
【输出说明】
输出两次交换后,小明手中的总面额有多少种不同的可能。
【输入样例】
1 1 1 1 1 1 1 1 1 10
5 5 5 5 5 5 5 5 5 20
【输出样例】
5
【样例说明】
两次交换后,小明手中的总面额有19 38 23 29 14五种可能

#define N 10
int main() {
    /*int a[N] = { 1,1,1,1,1,1,1,1,1,10 }, b[N + 1] = { 5,5,5,5,5,5,5,5,5,20 };*/
    int a[N], b[N + 1];
    int c[N * N] = { 0 };
    int num = 0;
    int kind = 0;
    int l = 0;
    for(int i=0;i<N;i++)
        std::cin >> a[i];
    for (int i = 0; i < N; i++)
        std::cin >> b[i];
    for (int i = 0; i < N; i++) {
        b[N] = a[i];
        for (int j = 0; j < N+1; j++) {
            /*a[i] = b[j];*/
            for (int k = 0; k < N; k++) {
                if (k == i)
                    num += b[j];
                else
                    num += a[k];
            }
            for (l = 0; l < kind; l++) {
                if (num == c[l]) {
                    break;
                }
            }
            if (c[l] == 0) {
                c[kind] = num;
                kind++;
            }
            num = 0;
        }
    }
    /*for (int i = 0; i < kind; i++) {
        std::cout << c[i]<<" ";
    }*/
    std::cout << kind;
}