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++
#include <bits/stdc++.h>
using namespace std;
int validPosition( int arr[], int N, int K)
{
int count = 0, sum = 0;
for ( int i = 0; i < N; i++) {
sum += arr[i];
}
for ( int i = 0; i < N; i++) {
if ((arr[i] + K) > (sum - arr[i]))
count++;
}
return count;
}
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
class GFG
{
static int validPosition( int arr[], int N, int K)
{
int count = 0 , sum = 0 ;
for ( int i = 0 ; i < N; i++)
{
sum += arr[i];
}
for ( int i = 0 ; i < N; i++)
{
if ((arr[i] + K) > (sum - arr[i]))
count++;
}
return count;
}
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));
}
}
|
Python3
def validPosition(arr, N, K):
count = 0 ; sum = 0 ;
for i in range (N):
sum + = arr[i];
for i in range (N):
if ((arr[i] + K) > ( sum - arr[i])):
count + = 1 ;
return count;
arr = [ 2 , 1 , 6 , 7 ];
K = 4 ;
N = len (arr);
print (validPosition(arr, N, K));
|
C#
using System;
class GFG
{
static int validPosition( int []arr, int N, int K)
{
int count = 0, sum = 0;
for ( int i = 0; i < N; i++)
{
sum += arr[i];
}
for ( int i = 0; i < N; i++)
{
if ((arr[i] + K) > (sum - arr[i]))
count++;
}
return count;
}
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));
}
}
|
PHP
<?php
function validPosition( $arr , $N , $K )
{
$count = 0; $sum = 0;
for ( $i = 0; $i < $N ; $i ++)
{
$sum += $arr [ $i ];
}
for ( $i = 0; $i < $N ; $i ++)
{
if (( $arr [ $i ] + $K ) > ( $sum - $arr [ $i ]))
$count ++;
}
return $count ;
}
$arr = array ( 2, 1, 6, 7 );
$K = 4;
$N = count ( $arr ) ;
echo validPosition( $arr , $N , $K );
?>
|
Javascript
<script>
function validPosition(arr, N, K)
{
var count = 0, sum = 0;
for ( var i = 0; i < N; i++) {
sum += arr[i];
}
for ( var i = 0; i < N; i++) {
if ((arr[i] + K) > (sum - arr[i]))
count++;
}
return count;
}
var arr = [ 2, 1, 6, 7 ], K = 4;
var N = arr.length;
document.write( validPosition(arr, N, K));
</script>
|
Time Complexity : O(N)
Auxiliary Space : O(1)