Given an array arr[], the task is to check whether it is possible to make all the elements of the array zero by the given operation. In a single operation, any two elements arr[i] and arr[j] can be decremented by one at the same time.
Examples:
Input: arr[] = {1, 2, 1, 2, 2}
Output: Yes
Decrement the 1st and the 2nd element, arr[] = {0, 1, 1, 2, 2}
Decrement the 2nd and the 3rd element, arr[] = {0, 0, 0, 2, 2}
Decrement the 4th and the 5th element, arr[] = {0, 0, 0, 1, 1}
Decrement the 4th and the 5th element, arr[] = {0, 0, 0, 0, 0}
Input: arr[] = {1, 2, 3, 4, 5}
Output: No
Approach: The given array can be only be made zero if it holds the following conditions true:
- The sum of the elements of the array must be even.
- The largest elements must be less than or equal to ?sum / 2? where sum is the sum of the other elements.
Below is the implementation of the above approach:
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
// Function that returns true if all // the array elements can be made // 0 with the given operation bool checkZeroArray( int * arr, int n)
{ // Find the maximum element
// and the sum
int sum = 0, maximum = INT_MIN;
for ( int i = 0; i < n; i++) {
sum = sum + arr[i];
maximum = max(maximum, arr[i]);
}
// Check the required condition
if (sum % 2 == 0 && maximum <= sum / 2)
return true ;
return false ;
} // Driver code int main()
{ int arr[] = { 1, 2, 1, 2, 2 };
int n = sizeof (arr) / sizeof ( int );
if (checkZeroArray(arr, n))
cout << "Yes" ;
else
cout << "No" ;
return 0;
} |
// Java implementation of the above approach public class GFG
{ // Function that returns true if all
// the array elements can be made
// 0 with the given operation
static boolean checkZeroArray( int []arr, int n)
{
// Find the maximum element
// and the sum
int sum = 0 , maximum = Integer.MIN_VALUE;
for ( int i = 0 ; i < n; i++)
{
sum = sum + arr[i];
maximum = Math.max(maximum, arr[i]);
}
// Check the required condition
if (sum % 2 == 0 && maximum <= sum / 2 )
return true ;
return false ;
}
// Driver code
public static void main (String[] args)
{
int arr[] = { 1 , 2 , 1 , 2 , 2 };
int n = arr.length;
if (checkZeroArray(arr, n) == true )
System.out.println( "Yes" );
else
System.out.println( "No" );
}
} // This code is contributed by AnkitRai01 |
# Python3 implementation of the approach # Function that returns true if all # the array elements can be made # 0 with the given operation def checkZeroArray(arr,n):
# Find the maximum element
# and the sum
sum = 0
maximum = - 10 * * 9
for i in range (n):
sum = sum + arr[i]
maximum = max (maximum, arr[i])
# Check the required condition
if ( sum % 2 = = 0 and maximum < = sum / / 2 ):
return True
return False
# Driver code arr = [ 1 , 2 , 1 , 2 , 2 ]
n = len (arr)
if (checkZeroArray(arr, n)):
print ( "Yes" )
else :
print ( "No" )
# This code is contributed by mohit kumar 29 |
// C# implementation of the above approach using System;
class GFG
{ // Function that returns true if all
// the array elements can be made
// 0 with the given operation
static bool checkZeroArray( int []arr, int n)
{
// Find the maximum element
// and the sum
int sum = 0, maximum = int .MinValue;
for ( int i = 0; i < n; i++)
{
sum = sum + arr[i];
maximum = Math.Max(maximum, arr[i]);
}
// Check the required condition
if (sum % 2 == 0 && maximum <= sum / 2)
return true ;
return false ;
}
// Driver code
public static void Main ()
{
int []arr = { 1, 2, 1, 2, 2 };
int n = arr.Length;
if (checkZeroArray(arr, n) == true )
Console.WriteLine( "Yes" );
else
Console.WriteLine( "No" );
}
} // This code is contributed by AnkitRai01 |
<script> // JavaScript implementation of the above approach // Function that returns true if all
// the array elements can be made
// 0 with the given operation
function checkZeroArray(arr,n)
{
// Find the maximum element
// and the sum
let sum = 0, maximum = Number.MIN_VALUE;
for (let i = 0; i < n; i++)
{
sum = sum + arr[i];
maximum = Math.max(maximum, arr[i]);
}
// Check the required condition
if (sum % 2 == 0 && maximum <= sum / 2)
return true ;
return false ;
}
// Driver code
let arr=[1, 2, 1, 2, 2 ];
let n = arr.length;
if (checkZeroArray(arr, n) == true )
document.write( "Yes" );
else
document.write( "No" );
// This code is contributed by unknown2108 </script> |
Yes
Time Complexity: O(n)
Auxiliary Space: O(1)