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

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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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 `

Output:

```Yes
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.