# Sum of elements in an array whose difference with the mean of another array is less than k

Given two unsorted arrays arr1[] and arr2[]. Find the sum of elements from arr1[] whose difference with the mean of arr2[] is < k.

Examples:

Input: arr1[] = {1, 2, 3, 4, 7, 9}, arr2[] = {0, 1, 2, 1, 1, 4}, k = 2
Output: 6
Mean of 2nd array is 1.5.
Hence, 1, 2, 3 are the only elements
whose difference with mean is less than 2

Input: arr1[] = {5, 10, 2, 6, 1, 8, 6, 12}, arr2[] = {6, 5, 11, 4, 2, 3, 7}, k = 4
Output: 5

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Calculate the mean of the second array and then traverse the first array and calculate the sum of those elements whose absolute difference with mean is < k.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function for finding sum of elements ` `// whose diff with mean is not more than k ` `int` `findSumofEle(``int` `arr1[], ``int` `m, ` `                 ``int` `arr2[], ``int` `n, ``int` `k) ` `{ ` `    ``float` `arraySum = 0; ` ` `  `    ``// Find the mean of second array ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``arraySum += arr2[i]; ` `    ``float` `mean = arraySum / n; ` ` `  `    ``// Find sum of elements from array1 ` `    ``// whose difference with mean in not more than k ` `    ``int` `sumOfElements = 0; ` `    ``float` `difference; ` ` `  `    ``for` `(``int` `i = 0; i < m; i++) { ` `        ``difference = arr1[i] - mean; ` `        ``if` `((difference < 0) && (k > (-1) * difference)) { ` `            ``sumOfElements += arr1[i]; ` `        ``} ` `        ``if` `((difference >= 0) && (k > difference)) { ` `            ``sumOfElements += arr1[i]; ` `        ``} ` `    ``} ` ` `  `    ``// Return result ` `    ``return` `sumOfElements; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `arr1[] = { 1, 2, 3, 4, 7, 9 }; ` `    ``int` `arr2[] = { 0, 1, 2, 1, 1, 4 }; ` `    ``int` `k = 2; ` `    ``int` `m, n; ` ` `  `    ``m = ``sizeof``(arr1) / ``sizeof``(arr1); ` `    ``n = ``sizeof``(arr2) / ``sizeof``(arr2); ` ` `  `    ``cout << findSumofEle(arr1, m, arr2, n, k); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach  ` `class` `GFG ` `{ ` `     `  `// Function for finding sum of elements  ` `// whose diff with mean is not more than k  ` `static` `int` `findSumofEle(``int` `[]arr1, ``int` `m,  ` `                ``int` `[]arr2, ``int` `n, ``int` `k)  ` `{  ` `    ``float` `arraySum = ``0``;  ` ` `  `    ``// Find the mean of second array  ` `    ``for` `(``int` `i = ``0``; i < n; i++)  ` `        ``arraySum += arr2[i];  ` `    ``float` `mean = arraySum / n;  ` ` `  `    ``// Find sum of elements from array1  ` `    ``// whose difference with mean in not more than k  ` `    ``int` `sumOfElements = ``0``;  ` `    ``float` `difference = ``0``;  ` ` `  `    ``for` `(``int` `i = ``0``; i < m; i++)  ` `    ``{  ` `        ``difference = arr1[i] - mean;  ` `        ``if` `((difference < ``0``) && (k > (-``1``) * difference))  ` `        ``{  ` `            ``sumOfElements += arr1[i];  ` `        ``}  ` `        ``if` `((difference >= ``0``) && (k > difference))  ` `        ``{  ` `            ``sumOfElements += arr1[i];  ` `        ``}  ` `    ``}  ` ` `  `    ``// Return result  ` `    ``return` `sumOfElements;  ` `}  ` ` `  `// Driver code  ` `public` `static` `void` `main (String[] args) ` `{ ` `    ``int` `[]arr1 = { ``1``, ``2``, ``3``, ``4``, ``7``, ``9` `};  ` `    ``int` `[]arr2 = { ``0``, ``1``, ``2``, ``1``, ``1``, ``4` `};  ` `    ``int` `k = ``2``;  ` ` `  `    ``int` `m = arr1.length;  ` `    ``int` `n = arr2.length;  ` ` `  `    ``System.out.println(findSumofEle(arr1, m, arr2, n, k));  ` `}  ` `} ` ` `  `// This code is contributed by mits `

## Python3

 `# Python3 implementation of the approach ` ` `  `# Function for finding sum of elements ` `# whose diff with mean is not more than k ` `def` `findSumofEle(arr1, m, arr2, n, k): ` `    ``arraySum ``=` `0` ` `  `    ``# Find the mean of second array ` `    ``for` `i ``in` `range``(n): ` `        ``arraySum ``+``=` `arr2[i] ` `    ``mean ``=` `arraySum ``/` `n ` ` `  `    ``# Find sum of elements from array1 ` `    ``# whose difference with mean  ` `    ``# is not more than k ` `    ``sumOfElements ``=` `0` `    ``difference ``=` `0` ` `  `    ``for` `i ``in` `range``(m): ` ` `  `        ``difference ``=` `arr1[i] ``-` `mean ` ` `  `        ``if` `((difference < ``0``) ``and` `(k > (``-``1``) ``*` `difference)): ` `            ``sumOfElements ``+``=` `arr1[i] ` ` `  `        ``if` `((difference >``=` `0``) ``and` `(k > difference)): ` `            ``sumOfElements ``+``=` `arr1[i] ` ` `  `    ``# Return result ` `    ``return` `sumOfElements ` ` `  `# Driver code ` `arr1 ``=` `[ ``1``, ``2``, ``3``, ``4``, ``7``, ``9``] ` `arr2 ``=` `[ ``0``, ``1``, ``2``, ``1``, ``1``, ``4``] ` `k ``=` `2` ` `  `m ``=` `len``(arr1) ` `n ``=` `len``(arr2) ` ` `  `print``(findSumofEle(arr1, m, arr2, n, k)) ` ` `  `# This code is contributed by mohit kumar `

## C#

 `// C# implementation of the approach  ` `using` `System;  ` ` `  `class` `GFG ` `{ ` `     `  `// Function for finding sum of elements  ` `// whose diff with mean is not more than k  ` `static` `int` `findSumofEle(``int` `[]arr1, ``int` `m,  ` `                ``int` `[]arr2, ``int` `n, ``int` `k)  ` `{  ` `    ``float` `arraySum = 0;  ` ` `  `    ``// Find the mean of second array  ` `    ``for` `(``int` `i = 0; i < n; i++)  ` `        ``arraySum += arr2[i];  ` `    ``float` `mean = arraySum / n;  ` ` `  `    ``// Find sum of elements from array1  ` `    ``// whose difference with mean in not more than k  ` `    ``int` `sumOfElements = 0;  ` `    ``float` `difference = 0;  ` ` `  `    ``for` `(``int` `i = 0; i < m; i++)  ` `    ``{  ` `        ``difference = arr1[i] - mean;  ` `        ``if` `((difference < 0) && (k > (-1) * difference))  ` `        ``{  ` `            ``sumOfElements += arr1[i];  ` `        ``}  ` `        ``if` `((difference >= 0) && (k > difference))  ` `        ``{  ` `            ``sumOfElements += arr1[i];  ` `        ``}  ` `    ``}  ` ` `  `    ``// Return result  ` `    ``return` `sumOfElements;  ` `}  ` ` `  `// Driver code  ` `static` `void` `Main()  ` `{  ` `    ``int` `[]arr1 = { 1, 2, 3, 4, 7, 9 };  ` `    ``int` `[]arr2 = { 0, 1, 2, 1, 1, 4 };  ` `    ``int` `k = 2;  ` ` `  `    ``int` `m = arr1.Length;  ` `    ``int` `n = arr2.Length;  ` ` `  `    ``Console.WriteLine(findSumofEle(arr1, m, arr2, n, k));  ` `}  ` `} ` ` `  `// This code is contributed by mits `

## PHP

 ` (-1) * ``\$difference``)) ` `        ``{  ` `            ``\$sumOfElements` `+= ``\$arr1``[``\$i``];  ` `        ``}  ` `        ``if` `((``\$difference` `>= 0) &&  ` `            ``(``\$k` `> ``\$difference``)) ` `        ``{  ` `            ``\$sumOfElements` `+= ``\$arr1``[``\$i``];  ` `        ``}  ` `    ``}  ` ` `  `    ``// Return result  ` `    ``return` `\$sumOfElements``;  ` `}  ` ` `  `// Driver code  ` `\$arr1` `= ``array``( 1, 2, 3, 4, 7, 9 );  ` `\$arr2` `= ``array``( 0, 1, 2, 1, 1, 4 );  ` `\$k` `= 2;  ` ` `  `\$m` `= ``count``(``\$arr1``); ` `\$n` `= ``count``(``\$arr2``); ` ` `  `print``(findSumofEle(``\$arr1``, ``\$m``,  ` `                   ``\$arr2``, ``\$n``, ``\$k``));  ` ` `  `// This code is contributed by Ryuga  ` `?> `

Output:

```6
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Discovering ways to develop a plane for soaring career goals

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.