Related Articles
Sum of elements in an array whose difference with the mean of another array is less than k
• Last Updated : 27 Apr, 2021

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:
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:

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``?>`

## Javascript

 ``
Output:
`6`

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up