# Generate an array of given size with equal count and sum of odd and even numbers

Given an integer N, the task is to find an array of length N that contains same count of odd and even elements with an equal sum of even and odd elements in the array.

Note: Print -1 if no such array is possible.
Examples:

Input: N = 4
Output: 1 2 5 4
Explanation:
Even elements of the array – {2, 4}, S(even) = 6
Odd elements of the array – {1, 5}, S(odd) = 6

Input: N = 6
Output: -1
Explanation:
There are no such array which contains 3 even elements and 3 odd elements with equal sum.

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

Approach: The key observation in the problem is that only the length of array which is multiple of 4 can form array with equal number of even and odd elements with equal sum. Below is the illustration of the steps:

• Even elements of the array is the first N/2 even elements of the natural numbers starting from 2.
• Similarly, (N/2 – 1) odd elements of the array is the first (N/2 – 1) odd elements of the natural numbers starting from 1.
• The Last odd element of the array is the required value to make the sum of the even and odd elements of the array equal.
```Last Odd Element =
(sum of even elements) -
(sum of N/2 - 1 odd elements)
```

Below is the implementation of the above approach:

## C++

 `// C++ implementation to find the ` `// array containing same count of ` `// even and odd elements with equal ` `// sum of even and odd elements ` ` `  `#include ` ` `  `using` `namespace` `std; ` ` `  `// Function to find the array such that ` `// the array contains the same count ` `// of even and odd elements with equal ` `// sum of even and odd elements ` `void` `findSolution(``int` `N) ` `{ ` ` `  `    ``// Length of array which is not ` `    ``// divisible by 4 is unable to ` `    ``// form such array ` `    ``if` `(N % 4 != 0) ` `        ``cout << -1 << ``"\n"``; ` `    ``else` `{ ` `        ``int` `temp = 0, sum_odd = 0, ` `            ``sum_even = 0; ` `        ``int` `result[N] = { 0 }; ` ` `  `        ``// Loop to find the resulted ` `        ``// array containing the same ` `        ``// count of even and odd elements ` `        ``for` `(``int` `i = 0; i < N; i += 2) { ` `            ``temp += 2; ` ` `  `            ``result[i + 1] = temp; ` `            ``// Find the total sum ` `            ``// of even elements ` `            ``sum_even += result[i + 1]; ` ` `  `            ``result[i] = temp - 1; ` `            ``// Find the total sum ` `            ``// of odd elements ` `            ``sum_odd += result[i]; ` `        ``} ` ` `  `        ``// Find the difference between the ` `        ``// total sum of even and odd elements ` `        ``int` `diff = sum_even - sum_odd; ` ` `  `        ``// The difference will be added ` `        ``// in the last odd element ` `        ``result[N - 2] += diff; ` ` `  `        ``for` `(``int` `i = 0; i < N; i++) ` `            ``cout << result[i] << ``" "``; ` `        ``cout << ``"\n"``; ` `    ``} ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` `    ``int` `N = 8; ` `    ``findSolution(N); ` `    ``return` `0; ` `} `

## Java

 `// Java implementation to find the ` `// array containing same count of ` `// even and odd elements with equal ` `// sum of even and odd elements ` ` `  `class` `GFG{ ` ` `  `// Function to find the array such that ` `// the array contains the same count ` `// of even and odd elements with equal ` `// sum of even and odd elements ` `static` `void` `findSolution(``int` `N) ` `{ ` ` `  `    ``// Length of array which is not ` `    ``// divisible by 4 is unable to ` `    ``// form such array ` `    ``if` `(N % ``4` `!= ``0``) ` `        ``System.out.print(-``1` `+ ``"\n"``); ` ` `  `    ``else`  `    ``{ ` `        ``int` `temp = ``0``, sum_odd = ``0``; ` `        ``int` `sum_even = ``0``; ` `        ``int` `result[] = ``new` `int``[N]; ` ` `  `        ``// Loop to find the resulted ` `        ``// array containing the same ` `        ``// count of even and odd elements ` `        ``for``(``int` `i = ``0``; i < N; i += ``2``) ` `        ``{ ` `           ``temp += ``2``; ` `           ``result[i + ``1``] = temp; ` `            `  `           ``// Find the total sum ` `           ``// of even elements ` `           ``sum_even += result[i + ``1``]; ` `           ``result[i] = temp - ``1``; ` `            `  `           ``// Find the total sum ` `           ``// of odd elements ` `           ``sum_odd += result[i]; ` `        ``} ` `         `  `        ``// Find the difference between the ` `        ``// total sum of even and odd elements ` `        ``int` `diff = sum_even - sum_odd; ` ` `  `        ``// The difference will be added ` `        ``// in the last odd element ` `        ``result[N - ``2``] += diff; ` ` `  `        ``for``(``int` `i = ``0``; i < N; i++) ` `           ``System.out.print(result[i] + ``" "``); ` `        ``System.out.print(``"\n"``); ` `    ``} ` `} ` ` `  `// Driver Code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``int` `N = ``8``; ` `    ``findSolution(N); ` `} ` `} ` ` `  `// This code is contributed by Amit Katiyar `

## Python3

 `# Python3 implementation to find the  ` `# array containing same count of  ` `# even and odd elements with equal  ` `# sum of even and odd elements  ` ` `  `# Function to find the array such that  ` `# the array contains the same count  ` `# of even and odd elements with equal  ` `# sum of even and odd elements  ` `def` `findSolution(N):  ` ` `  `    ``# Length of array which is not  ` `    ``# divisible by 4 is unable to  ` `    ``# form such array  ` `    ``if` `(N ``%` `4` `!``=` `0``):  ` `        ``print``(``-``1``)  ` `    ``else``:  ` `        ``temp ``=` `0` `        ``sum_odd ``=` `0` `        ``sum_even ``=` `0` `        ``result ``=` `[``0``] ``*` `N  ` ` `  `        ``# Loop to find the resulted  ` `        ``# array containing the same  ` `        ``# count of even and odd elements  ` `        ``for` `i ``in` `range``(``0``, N, ``2``):  ` `            ``temp ``+``=` `2` `            ``result[i ``+` `1``] ``=` `temp  ` `             `  `            ``# Find the total sum  ` `            ``# of even elements  ` `            ``sum_even ``+``=` `result[i ``+` `1``]  ` `            ``result[i] ``=` `temp ``-` `1` `             `  `            ``# Find the total sum  ` `            ``# of odd elements  ` `            ``sum_odd ``+``=` `result[i]  ` ` `  `        ``# Find the difference between the  ` `        ``# total sum of even and odd elements  ` `        ``diff ``=` `sum_even ``-` `sum_odd  ` ` `  `        ``# The difference will be added  ` `        ``# in the last odd element  ` `        ``result[N ``-` `2``] ``+``=` `diff  ` `         `  `        ``for` `i ``in` `range``(N):  ` `            ``print``(result[i], end ``=` `" "``)  ` `        ``print``()  ` ` `  `# Driver Code  ` `N ``=` `8``;  ` `findSolution(N) ` `     `  `# This code is contributed by divyamohan123  `

## C#

 `// C# implementation to find the ` `// array containing same count of ` `// even and odd elements with equal ` `// sum of even and odd elements ` `using` `System; ` ` `  `class` `GFG{ ` ` `  `// Function to find the array such that ` `// the array contains the same count ` `// of even and odd elements with equal ` `// sum of even and odd elements ` `static` `void` `findSolution(``int` `N) ` `{ ` ` `  `    ``// Length of array which is not ` `    ``// divisible by 4 is unable to ` `    ``// form such array ` `    ``if` `(N % 4 != 0) ` `        ``Console.Write(-1 + ``"\n"``); ` ` `  `    ``else` `    ``{ ` `        ``int` `temp = 0, sum_odd = 0; ` `        ``int` `sum_even = 0; ` `        ``int` `[]result = ``new` `int``[N]; ` ` `  `        ``// Loop to find the resulted ` `        ``// array containing the same ` `        ``// count of even and odd elements ` `        ``for``(``int` `i = 0; i < N; i += 2) ` `        ``{ ` `           ``temp += 2; ` `           ``result[i + 1] = temp; ` `            `  `           ``// Find the total sum ` `           ``// of even elements ` `           ``sum_even += result[i + 1]; ` `           ``result[i] = temp - 1; ` `            `  `           ``// Find the total sum ` `           ``// of odd elements ` `           ``sum_odd += result[i]; ` `        ``} ` `         `  `        ``// Find the difference between the ` `        ``// total sum of even and odd elements ` `        ``int` `diff = sum_even - sum_odd; ` ` `  `        ``// The difference will be added ` `        ``// in the last odd element ` `        ``result[N - 2] += diff; ` ` `  `        ``for``(``int` `i = 0; i < N; i++) ` `           ``Console.Write(result[i] + ``" "``); ` `        ``Console.Write(``"\n"``); ` `    ``} ` `} ` ` `  `// Driver Code ` `public` `static` `void` `Main(String[] args) ` `{ ` `    ``int` `N = 8; ` `    ``findSolution(N); ` `} ` `} ` ` `  `// This code is contributed by Rohit_ranjan `

Output:

```1 2 3 4 5 6 11 8
```

Performance Analysis:

• Time Complexity: O(N)
• Auxiliary Space: O(1) My Personal Notes arrow_drop_up Practice until my ideals becomes my rivals

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.

Practice Tags :

2

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.