Problem:
Score : 200 points

Problem Statement

There are N gems. The value of the i-th gem is V_i.

You will choose some of these gems, possibly all or none, and get them.

However, you need to pay a cost of C_i to get the i-th gem.

Let X be the sum of the values of the gems obtained, and Y be the sum of the costs paid.

Find the maximum possible value of X-Y.

Constraints

All values in input are integers.

1 \leq N \leq 20

1 \leq C_i, V_i \leq 50

Input

Input is given from Standard Input in the following format:

N
V_1 V_2 ... V_N
C_1 C_2 ... C_N

Output

Print the maximum possible value of X-Y.

Sample Input 1

3
10 2 5
6 3 4

Sample Output 1

5

If we choose the first and third gems, X = 10 + 5 = 15 and Y = 6 + 4 = 10.
We have X-Y = 5 here, which is the maximum possible value.

Sample Input 2

4
13 21 6 19
11 30 6 15

Sample Output 2

6

Sample Input 3

1
1
50

Sample Output 3

0

Solution in C# (Mono 4.6.2.0) (judge verdict: Wrong Answer)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            long N = long.Parse(Console.ReadLine());
            long[] V = Console.ReadLine().Split(' ').Select(i => long.Parse(i)).ToArray();
            long[] C = Console.ReadLine().Split(' ').Select(i => long.Parse(i)).ToArray();
            List<long> result = new List<long>();
            for(int j = 0; j < N; j++)
            {
                long X = V[j];
                long Y = C[j];
                if (0 <= X - Y)
                {
                    result.Add(X - Y);
                }
                for (int z = 0; z < N; z++)
                {
                    if (j != z)
                    {
                        X += V[z];
                        Y += C[z];
                        if (0 <= X - Y)
                        {
                            result.Add(X - Y);
                        }
                    }
                }
            }
            if (result.Count != 0)
            {
                result.Sort();
                result.Reverse();
                Console.WriteLine(result[0]);
            }
            else 
            {
                Console.WriteLine(0);

            }
        }
    }
}
// 文字列の入力
//string s = Console.ReadLine();

// 整数の入力
//long n = long.Parse(Console.ReadLine());

// 文字列配列の入力
//string[] inputStrArray = Console.ReadLine().Split(' ');

// 整数配列の入力
//long[] inputLongArray = Console.ReadLine().Split(' ').Select(i => long.Parse(i)).ToArray();