Open In App

Count of elements whose absolute difference with the sum of all the other elements is greater than k

Given an array arr[] of N integers and an integer K, the task is to find the number of anomalies in the array. An anomaly is a number for which the absolute difference between it and all the other numbers in the array is greater than K. Find the number of anomalies. 

Examples: 

Input: arr[] = {1, 3, 5}, k = 1 
Output:
1 and 3 are the anomalies. 
|1 – (3 + 5)| = 7 > 1 
|3 – (1 + 5)| = 3 > 1

Input: arr[] = {7, 1, 8}, k = 5 
Output:
 

Approach: Find the sum of all the array elements and store it in sum, now for every element of the array arr[i] if the absolute difference of arr[i] with sum – arr[i] is > k then it is an anomaly. Count all the anomalies in the array and print the result in the end.

Below is the implementation of the above approach:  




// C++ implementation of the approach
#include<bits/stdc++.h>
using namespace std;
 
// Function to return the number of anomalies
static int countAnomalies(int arr[],
                          int n, int k)
{
 
    // To store the count of anomalies
    int cnt = 0;
 
    // To store the sum of the array elements
    int i, sum = 0;
 
    // Find the sum of the array elements
    for (i = 0; i < n; i++)
        sum += arr[i];
 
    // Count the anomalies
    for (i = 0; i < n; i++)
        if (abs(arr[i] -
               (sum - arr[i])) > k)
            cnt++;
 
    return cnt;
}
 
// Driver code
int main()
{
    int arr[] = { 1, 3, 5 };
    int n = sizeof(arr) / sizeof(arr[0]);
    int k = 1;
    cout << countAnomalies(arr, n, k);
}
 
// This code is contributed
// by Code_Mech




// Java implementation of the approach
class GFG {
 
    // Function to return the number of anomalies
    static int countAnomalies(int arr[], int n, int k)
    {
 
        // To store the count of anomalies
        int cnt = 0;
 
        // To store the sum of the array elements
        int i, sum = 0;
 
        // Find the sum of the array elements
        for (i = 0; i < n; i++)
            sum += arr[i];
 
        // Count the anomalies
        for (i = 0; i < n; i++)
            if (Math.abs(arr[i] - (sum - arr[i])) > k)
                cnt++;
 
        return cnt;
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int arr[] = { 1, 3, 5 };
        int n = arr.length;
        int k = 1;
        System.out.print(countAnomalies(arr, n, k));
    }
}




# Python3 implementation of the approach
 
# Function to return the
# number of anomalies
def countAnomalies(arr, n, k):
 
    # To store the count of anomalies
    cnt = 0
 
    # To store the Sum of
    # the array elements
    i, Sum = 0, 0
 
    # Find the Sum of the array elements
    for i in range(n):
        Sum += arr[i]
 
    # Count the anomalies
    for i in range(n):
        if (abs(arr[i] - (Sum - arr[i])) > k):
            cnt += 1
 
    return cnt
 
# Driver code
arr = [1, 3, 5]
n = len(arr)
k = 1
print(countAnomalies(arr, n, k))
 
# This code is contributed
# by mohit kumar




// C# implementation of the approach
using System;
 
class GFG
{
 
    // Function to return the number of anomalies
    static int countAnomalies(int[] arr, int n, int k)
    {
 
        // To store the count of anomalies
        int cnt = 0;
 
        // To store the sum of the array elements
        int i, sum = 0;
 
        // Find the sum of the array elements
        for (i = 0; i < n; i++)
            sum += arr[i];
 
        // Count the anomalies
        for (i = 0; i < n; i++)
            if (Math.Abs(arr[i] - (sum - arr[i])) > k)
                cnt++;
 
        return cnt;
    }
 
    // Driver code
    public static void Main()
    {
        int[] arr = { 1, 3, 5 };
        int n = arr.Length;
        int k = 1;
        Console.WriteLine(countAnomalies(arr, n, k));
    }
}
 
// This code is contributed by Code_Mech.




<?php
// PHP implementation of the approach
 
// Function to return
// the number of anomalies
function countAnomalies($arr, $n, $k)
{
 
    // To store the count of anomalies
    $cnt = 0;
 
    // To store the sum of
    // the array elements
    $sum = 0;
 
    // Find the sum of the array elements
    for ($i = 0; $i < $n; $i++)
        $sum += $arr[$i];
 
    // Count the anomalies
    for ($i = 0; $i < $n; $i++)
        if (abs($arr[$i] -
               ($sum - $arr[$i])) > $k)
            $cnt++;
 
    return $cnt;
}
 
// Driver code
$arr = array(1, 3, 5);
$n = count($arr);
$k = 1;
 
echo countAnomalies($arr, $n, $k);
 
// This code is contributed by Ryuga
?>




<script>
 
// Javascript implementation of the approach
 
// Function to return the number of anomalies
function countAnomalies(arr, n, k)
{
     
    // To store the count of anomalies
    var cnt = 0;
 
    // To store the sum of the array elements
    var i, sum = 0;
 
    // Find the sum of the array elements
    for(i = 0; i < n; i++)
        sum += arr[i];
 
    // Count the anomalies
    for(i = 0; i < n; i++)
        if (Math.abs(arr[i] - (sum - arr[i])) > k)
            cnt++;
 
    return cnt;
}
 
// Driver code
var arr = [ 1, 3, 5 ];
var n = arr.length;
var k = 1;
 
document.write(countAnomalies(arr, n, k));
 
// This code is contributed by umadevi9616
 
</script>

Output: 
2

 

Time Complexity : O(n)
Auxiliary Space : O(1)


Article Tags :