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:YesExplanation:

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 <bits/stdc++.h>` `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.