# Check if N numbers with Even Sum can be selected from a given Array

Given an array arr[] and an odd integer N, the task is to check if N numbers can be selected from the array having even sum. Print Yes if possible. Otherwise print No.

Examples:

Input: arr[] = {9, 2, 3, 4, 1, 8, 7, 7, 6}, N = 5
Output: Yes
Explanation: {9, 3, 1, 7, 6} are the N elements having even sum

Input: arr[] = {1, 3, 7, 9, 3}, N = 3
Output: No

Approach: Follow the steps below to solve the problem:

1. Count even and odd integers and store it in even_freq and odd_freq respectively.
2. If even_freq exceeds N, then take all even numbers and their sum will be even. Therefore, print “Yes”.
3. Otherwise, check for odd_freq.
4. If odd_freq is odd, then check if (odd_freq + even_freq – 1) is ≥ N or not. If found to be true, print “Yes“.
5. If odd_freq is even, then then check if (odd_freq + even_freq) is ≥ N or not. If found to be true, print “Yes“.
6. If none of the above conditions satisfy, print “No”.

Below is the implementation of the above approach:

## C++

 `// C++ efficient program to check ` `// if N numbers with Odd sum can be ` `// selected from the given array ` `#include ` `using` `namespace` `std; ` ` `  `// Function to check if an odd sum can be ` `// made using N integers from the array ` `bool` `checkEvenSum(``int` `arr[], ``int` `N, ``int` `size) ` `{ ` `    ``// Initialize odd and even counts ` `    ``int` `even_freq = 0, odd_freq = 0; ` ` `  `    ``// Iterate over the array to count ` `    ``// the no. of even and odd integers ` `    ``for` `(``int` `i = 0; i < size; i++) { ` `        ``// If element is odd ` `        ``if` `(arr[i] & 1) ` `            ``odd_freq++; ` ` `  `        ``// If element is even ` `        ``else` `            ``even_freq++; ` `    ``} ` ` `  `    ``// Check if even_freq is more than N ` `    ``if` `(even_freq >= N) ` `        ``return` `true``; ` `    ``else` `{ ` ` `  `        ``// If odd_freq is odd ` `        ``if` `(odd_freq & 1) { ` ` `  `            ``// Consider even count of odd ` `            ``int` `taken = odd_freq - 1; ` ` `  `            ``// Calculate even required ` `            ``int` `req = N - taken; ` ` `  `            ``// If even count is less ` `            ``// than required count ` `            ``if` `(even_freq < req) { ` `                ``return` `false``; ` `            ``} ` `            ``else` `                ``return` `true``; ` `        ``} ` `        ``else` `{ ` ` `  `            ``int` `taken = odd_freq; ` ` `  `            ``// Calculate even required ` `            ``int` `req = N - taken; ` ` `  `            ``// If even count is less ` `            ``// than required count ` `            ``if` `(even_freq < req) { ` `                ``return` `false``; ` `            ``} ` `            ``else` `                ``return` `true``; ` `        ``} ` `    ``} ` ` `  `    ``return` `false``; ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` `    ``int` `arr[] = { 9, 2, 3, 4, 18, 7, 7, 6 }; ` `    ``int` `size = ``sizeof``(arr) / ``sizeof``(arr); ` `    ``int` `N = 5; ` ` `  `    ``if` `(checkEvenSum(arr, N, size)) ` `        ``cout << ``"Yes"` `<< endl; ` `    ``else` `        ``cout << ``"No"` `<< endl; ` `} `

## Java

 `// Java efficient program to check ` `// if N numbers with Odd sum can be ` `// selected from the given array ` `import` `java.util.*; ` ` `  `class` `GFG{ ` ` `  `// Function to check if an odd sum can be ` `// made using N integers from the array ` `static` `boolean` `checkEvenSum(``int` `arr[],  ` `                            ``int` `N, ``int` `size) ` `{ ` `     `  `    ``// Initialize odd and even counts ` `    ``int` `even_freq = ``0``, odd_freq = ``0``; ` ` `  `    ``// Iterate over the array to count ` `    ``// the no. of even and odd integers ` `    ``for``(``int` `i = ``0``; i < size; i++) ` `    ``{ ` `         `  `        ``// If element is odd ` `        ``if` `(arr[i] % ``2` `== ``1``) ` `            ``odd_freq++; ` ` `  `        ``// If element is even ` `        ``else` `            ``even_freq++; ` `    ``} ` ` `  `    ``// Check if even_freq is more than N ` `    ``if` `(even_freq >= N) ` `        ``return` `true``; ` `    ``else` `    ``{ ` ` `  `        ``// If odd_freq is odd ` `        ``if` `(odd_freq % ``2` `== ``1``)  ` `        ``{ ` ` `  `            ``// Consider even count of odd ` `            ``int` `taken = odd_freq - ``1``; ` ` `  `            ``// Calculate even required ` `            ``int` `req = N - taken; ` ` `  `            ``// If even count is less ` `            ``// than required count ` `            ``if` `(even_freq < req) ` `            ``{ ` `                ``return` `false``; ` `            ``} ` `            ``else` `                ``return` `true``; ` `        ``} ` `        ``else` `        ``{ ` `            ``int` `taken = odd_freq; ` ` `  `            ``// Calculate even required ` `            ``int` `req = N - taken; ` ` `  `            ``// If even count is less ` `            ``// than required count ` `            ``if` `(even_freq < req)  ` `            ``{ ` `                ``return` `false``; ` `            ``} ` `            ``else` `                ``return` `true``; ` `        ``} ` `    ``} ` `} ` ` `  `// Driver Code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``int` `arr[] = { ``9``, ``2``, ``3``, ``4``, ``18``, ``7``, ``7``, ``6` `}; ` `    ``int` `size = arr.length; ` `    ``int` `N = ``5``; ` ` `  `    ``if` `(checkEvenSum(arr, N, size)) ` `        ``System.out.print(``"Yes"` `+ ``"\n"``); ` `    ``else` `        ``System.out.print(``"No"` `+ ``"\n"``); ` `} ` `} ` ` `  `// This code is contributed by Rohit_ranjan`

## Python3

 `# Python3 efficient program to check ` `# if N numbers with Odd sum can be ` `# selected from the given array ` ` `  `# Function to check if an odd sum can be ` `# made using N integers from the array ` `def` `checkEvenSum(arr, N, size): ` ` `  `    ``# Initialize odd and even counts ` `    ``even_freq , odd_freq ``=` `0` `, ``0` ` `  `    ``# Iterate over the array to count ` `    ``# the no. of even and odd integers ` `    ``for` `i ``in` `range``(size): ` `         `  `        ``# If element is odd ` `        ``if` `(arr[i] & ``1``): ` `            ``odd_freq ``+``=` `1` ` `  `        ``# If element is even ` `        ``else``: ` `            ``even_freq ``+``=` `1` `     `  `    ``# Check if even_freq is more than N ` `    ``if` `(even_freq >``=` `N): ` `        ``return` `True` `    ``else``: ` ` `  `        ``# If odd_freq is odd ` `        ``if` `(odd_freq & ``1``): ` ` `  `            ``# Consider even count of odd ` `            ``taken ``=` `odd_freq ``-` `1` ` `  `            ``# Calculate even required ` `            ``req ``=` `N ``-` `taken ` ` `  `            ``# If even count is less ` `            ``# than required count ` `            ``if` `(even_freq < req): ` `                ``return` `False` `            ``else``: ` `                ``return` `True` ` `  `        ``else``: ` `            ``taken ``=` `odd_freq ` ` `  `            ``# Calculate even required ` `            ``req ``=` `N ``-` `taken ` ` `  `            ``# If even count is less ` `            ``# than required count ` `            ``if` `(even_freq < req): ` `                ``return` `False` `            ``else``: ` `                ``return` `True` ` `  `    ``return` `False` ` `  `# Driver Code ` `if` `__name__ ``=``=` `"__main__"``: ` ` `  `    ``arr ``=` `[ ``9``, ``2``, ``3``, ``4``, ``18``, ``7``, ``7``, ``6` `] ` `    ``size ``=` `len``(arr) ` `    ``N ``=` `5` ` `  `    ``if` `(checkEvenSum(arr, N, size)): ` `        ``print``(``"Yes"``) ` `    ``else``: ` `        ``print``(``"No"``) ` ` `  `# This code is contributed by chitranayal `

## C#

 `// C# efficient program to check ` `// if N numbers with Odd sum can be ` `// selected from the given array ` `using` `System; ` ` `  `class` `GFG{ ` ` `  `// Function to check if an odd sum can be ` `// made using N integers from the array ` `static` `bool` `checkEvenSum(``int` `[]arr,  ` `                         ``int` `N, ``int` `size) ` `{ ` `     `  `    ``// Initialize odd and even counts ` `    ``int` `even_freq = 0, odd_freq = 0; ` ` `  `    ``// Iterate over the array to count ` `    ``// the no. of even and odd integers ` `    ``for``(``int` `i = 0; i < size; i++) ` `    ``{ ` `         `  `        ``// If element is odd ` `        ``if` `(arr[i] % 2 == 1) ` `            ``odd_freq++; ` ` `  `        ``// If element is even ` `        ``else` `            ``even_freq++; ` `    ``} ` ` `  `    ``// Check if even_freq is more than N ` `    ``if` `(even_freq >= N) ` `        ``return` `true``; ` `         `  `    ``else` `    ``{ ` ` `  `        ``// If odd_freq is odd ` `        ``if` `(odd_freq % 2 == 1)  ` `        ``{ ` ` `  `            ``// Consider even count of odd ` `            ``int` `taken = odd_freq - 1; ` ` `  `            ``// Calculate even required ` `            ``int` `req = N - taken; ` ` `  `            ``// If even count is less ` `            ``// than required count ` `            ``if` `(even_freq < req) ` `            ``{ ` `                ``return` `false``; ` `            ``} ` `            ``else` `                ``return` `true``; ` `        ``} ` `        ``else` `        ``{ ` `            ``int` `taken = odd_freq; ` ` `  `            ``// Calculate even required ` `            ``int` `req = N - taken; ` ` `  `            ``// If even count is less ` `            ``// than required count ` `            ``if` `(even_freq < req)  ` `            ``{ ` `                ``return` `false``; ` `            ``} ` `            ``else` `                ``return` `true``; ` `        ``} ` `    ``} ` `} ` ` `  `// Driver Code ` `public` `static` `void` `Main(String[] args) ` `{ ` `    ``int` `[]arr = { 9, 2, 3, 4, 18, 7, 7, 6 }; ` `    ``int` `size = arr.Length; ` `    ``int` `N = 5; ` ` `  `    ``if` `(checkEvenSum(arr, N, size)) ` `        ``Console.Write(``"Yes"` `+ ``"\n"``); ` `    ``else` `        ``Console.Write(``"No"` `+ ``"\n"``); ` `} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

Output:

```Yes
```

Time Complexity: O(N)
Auxiliary Space: O(1)

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 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.