Given an array arr[] and a number K. The task is to find out the number of valid positions i such that (arr[i] + K) is greater than sum of all elements of array excluding arr[i].
Examples:
Input: arr[] = {2, 1, 6, 7} K = 4 Output: 1 Explanation: There is only 1 valid position i.e 4th. After adding 4 to the element at 4th position it is greater than the sum of all other elements of the array. Input: arr[] = {2, 1, 5, 4} K = 2 Output: 0 Explanation: There is no valid position.
Approach:
- First of all find the sum of all the elements of the array and store it in a variable say sum.
- Now, traverse the array and for every position i check if the condition (arr[i] + K) > (sum – arr[i]) holds.
- If YES then increase the counter and finally print the value of counter.
Below is the implementation of the above approach:
C++
// C++ program to implement above approach #include <bits/stdc++.h> using namespace std;
// Function that will find out // the valid position int validPosition( int arr[], int N, int K)
{ int count = 0, sum = 0;
// find sum of all the elements
for ( int i = 0; i < N; i++) {
sum += arr[i];
}
// adding K to the element and check
// whether it is greater than sum of
// all other elements
for ( int i = 0; i < N; i++) {
if ((arr[i] + K) > (sum - arr[i]))
count++;
}
return count;
} // Driver code int main()
{ int arr[] = { 2, 1, 6, 7 }, K = 4;
int N = sizeof (arr) / sizeof (arr[0]);
cout << validPosition(arr, N, K);
return 0;
} |
Java
// Java implementation of the approach class GFG
{ // Function that will find out // the valid position static int validPosition( int arr[], int N, int K)
{ int count = 0 , sum = 0 ;
// find sum of all the elements
for ( int i = 0 ; i < N; i++)
{
sum += arr[i];
}
// adding K to the element and check
// whether it is greater than sum of
// all other elements
for ( int i = 0 ; i < N; i++)
{
if ((arr[i] + K) > (sum - arr[i]))
count++;
}
return count;
} // Driver code public static void main(String[] args)
{ int arr[] = { 2 , 1 , 6 , 7 }, K = 4 ;
int N = arr.length;
System.out.println(validPosition(arr, N, K));
} } /* This code contributed by PrinciRaj1992 */ |
Python3
# Python3 program to implement # above approach # Function that will find out # the valid position def validPosition(arr, N, K):
count = 0 ; sum = 0 ;
# find sum of all the elements
for i in range (N):
sum + = arr[i];
# adding K to the element and check
# whether it is greater than sum of
# all other elements
for i in range (N):
if ((arr[i] + K) > ( sum - arr[i])):
count + = 1 ;
return count;
# Driver code arr = [ 2 , 1 , 6 , 7 ];
K = 4 ;
N = len (arr);
print (validPosition(arr, N, K));
# This code is contributed by 29AjayKumar |
C#
// C# implementation of the approach using System;
class GFG
{ // Function that will find out // the valid position static int validPosition( int []arr, int N, int K)
{ int count = 0, sum = 0;
// find sum of all the elements
for ( int i = 0; i < N; i++)
{
sum += arr[i];
}
// adding K to the element and check
// whether it is greater than sum of
// all other elements
for ( int i = 0; i < N; i++)
{
if ((arr[i] + K) > (sum - arr[i]))
count++;
}
return count;
} // Driver code public static void Main(String[] args)
{ int []arr = { 2, 1, 6, 7 }; int K = 4;
int N = arr.Length;
Console.WriteLine(validPosition(arr, N, K));
} } // This code has been contributed by 29AjayKumar |
PHP
<?php // PHP program to implement above approach // Function that will find out // the valid position function validPosition( $arr , $N , $K )
{ $count = 0; $sum = 0;
// find sum of all the elements
for ( $i = 0; $i < $N ; $i ++)
{
$sum += $arr [ $i ];
}
// adding K to the element and check
// whether it is greater than sum of
// all other elements
for ( $i = 0; $i < $N ; $i ++)
{
if (( $arr [ $i ] + $K ) > ( $sum - $arr [ $i ]))
$count ++;
}
return $count ;
} // Driver code
$arr = array ( 2, 1, 6, 7 );
$K = 4;
$N = count ( $arr ) ;
echo validPosition( $arr , $N , $K );
// This code is contributed by AnkitRai01
?> |
Javascript
<script> // Javascript program to implement above approach // Function that will find out // the valid position function validPosition(arr, N, K)
{ var count = 0, sum = 0;
// find sum of all the elements
for ( var i = 0; i < N; i++) {
sum += arr[i];
}
// adding K to the element and check
// whether it is greater than sum of
// all other elements
for ( var i = 0; i < N; i++) {
if ((arr[i] + K) > (sum - arr[i]))
count++;
}
return count;
} // Driver code var arr = [ 2, 1, 6, 7 ], K = 4;
var N = arr.length;
document.write( validPosition(arr, N, K)); </script> |
Output:
1
Time Complexity : O(N)
Auxiliary Space : O(1)