# Check if all elements of the given array can be made 0 by decrementing value in pairs

• Last Updated : 19 Jan, 2022

Given an array arr[] consisting of positive integers, the task is to check if all elements of the given array can be made 0 by performing the following operation:

• Choose two indices i and j such that i != j and subtract 1 from both arr[i] and arr[j]
• The above operation can be performed any number of times

Examples:

Input: arr[] = {1, 2, 3, 4}
Output: Yes
Explanation:
First, choose values 2 and 4 and perform the above operation 2 times. Then the array becomes 1 0 3 2.
Now choose 1 and 3 and apply above operation once to get 0 0 2 2.
Now pick two 2s and perform the above operation twice.
Finally array becomes 0 0 0 0.
Input: arr[] = {5, 5, 5, 5, 5}
Output: No

Approach: On observing the problem carefully, it can be observed that if there is only 1 element or the sum of all the elements is odd, then it is not possible to make all elements 0. Since at every iteration, 2 is being subtracted from the sum of all elements, therefore, the array can become 0 only if the sum of all elements of the array is even. And also, it is possible to make the array 0 when the largest number in the array is less than or equal to the sum of remaining elements.
Below is the implementation of the above approach:

## C++

 `// C++ program to make the array zero``// by decrementing value in pairs` `#include ``using` `namespace` `std;` `// Function to check if all the elements``// can be made 0 in an array``void` `canMake(``int` `n, ``int` `ar[])``{` `    ``// Variable to store``    ``// sum and maximum element``    ``// in an array``    ``int` `sum = 0, maxx = -1;` `    ``// Loop to calculate the sum and max value``    ``// of the given array``    ``for` `(``int` `i = 0; i < n; i++) {``        ``sum += ar[i];``        ``maxx = max(maxx, ar[i]);``    ``}` `    ``// If n is 1 or sum is odd or``    ``// sum - max element < max``    ``// then no solution``    ``if` `(n == 1 || sum % 2 == 1``        ``|| sum - maxx < maxx) {``        ``cout << ``"No\n"``;``    ``}``    ``else` `{` `        ``// For the remaining case, print Yes``        ``cout << ``"Yes\n"``;``    ``}``}` `// Driver code``int` `main()``{` `    ``int` `n = 6;``    ``int` `arr[] = { 1, 1, 2, 3, 6, 11 };` `    ``canMake(n, arr);` `    ``return` `0;``}`

## Java

 `// Java program to make the array zero``// by decrementing value in pairs``class` `GFG``{` `// Function to check if all the elements``// can be made 0 in an array``static` `void` `canMake(``int` `n, ``int` `ar[])``{` `    ``// Variable to store``    ``// sum and maximum element``    ``// in an array``    ``int` `sum = ``0``, maxx = -``1``;` `    ``// Loop to calculate the sum and max value``    ``// of the given array``    ``for` `(``int` `i = ``0``; i < n; i++)``    ``{``        ``sum += ar[i];``        ``maxx = Math.max(maxx, ar[i]);``    ``}` `    ``// If n is 1 or sum is odd or``    ``// sum - max element < max``    ``// then no solution``    ``if` `(n == ``1` `|| sum % ``2` `== ``1``        ``|| sum - maxx < maxx)``    ``{``        ``System.out.print(``"No\n"``);``    ``}``    ``else``    ``{` `        ``// For the remaining case, print Yes``        ``System.out.print(``"Yes\n"``);``    ``}``}` `// Driver code``public` `static` `void` `main(String[] args)``{` `    ``int` `n = ``6``;``    ``int` `arr[] = { ``1``, ``1``, ``2``, ``3``, ``6``, ``11` `};` `    ``canMake(n, arr);``}``}` `// This code is contributed by 29AjayKumar`

## Python3

 `# Python3 program to make the array zero``# by decrementing value in pairs` `# Function to check if all the elements``# can be made 0 in an array``def` `canMake(n, ar) :` `    ``# Variable to store``    ``# sum and maximum element``    ``# in an array``    ``sum` `=` `0``; maxx ``=` `-``1``;` `    ``# Loop to calculate the sum and max value``    ``# of the given array``    ``for` `i ``in` `range``(n) :``        ``sum` `+``=` `ar[i];``        ``maxx ``=` `max``(maxx, ar[i]);` `    ``# If n is 1 or sum is odd or``    ``# sum - max element < max``    ``# then no solution``    ``if` `(n ``=``=` `1` `or` `sum` `%` `2` `=``=` `1``        ``or` `sum` `-` `maxx < maxx) :``        ``print``(``"No"``);``    ` `    ``else` `:` `        ``# For the remaining case, print Yes``        ``print``(``"Yes"``);` `# Driver code``if` `__name__ ``=``=` `"__main__"` `:` `    ``n ``=` `6``;``    ``arr ``=` `[ ``1``, ``1``, ``2``, ``3``, ``6``, ``11` `];` `    ``canMake(n, arr);` `# This code is contributed by AnkitRai01`

## C#

 `// C# program to make the array zero``// by decrementing value in pairs``using` `System;` `class` `GFG``{` `// Function to check if all the elements``// can be made 0 in an array``static` `void` `canMake(``int` `n, ``int` `[]ar)``{` `    ``// Variable to store``    ``// sum and maximum element``    ``// in an array``    ``int` `sum = 0, maxx = -1;` `    ``// Loop to calculate the sum and max value``    ``// of the given array``    ``for` `(``int` `i = 0; i < n; i++)``    ``{``        ``sum += ar[i];``        ``maxx = Math.Max(maxx, ar[i]);``    ``}` `    ``// If n is 1 or sum is odd or``    ``// sum - max element < max``    ``// then no solution``    ``if` `(n == 1 || sum % 2 == 1``        ``|| sum - maxx < maxx)``    ``{``        ``Console.Write(``"No\n"``);``    ``}``    ``else``    ``{` `        ``// For the remaining case, print Yes``        ``Console.Write(``"Yes\n"``);``    ``}``}` `// Driver code``public` `static` `void` `Main(String[] args)``{` `    ``int` `n = 6;``    ``int` `[]arr = { 1, 1, 2, 3, 6, 11 };` `    ``canMake(n, arr);``}``}` `// This code is contributed by PrinciRaj1992`

## Javascript

 ``

Output:

`Yes`

Time Complexity: O(N)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up