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:
CPP
// 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 operationbool 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 codeint 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
// 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 |
Python
# Python3 implementation of the approach# Function that returns true if all# the array elements can be made# 0 with the given operationdef 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 codearr = [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#
// 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 |
Javascript
<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)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
