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

• Difficulty Level : Medium
• Last Updated : 10 May, 2021

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.

Approach: The key observation in the problem is that only the length of an array which is a multiple of 4 can form an array with an 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`

## Javascript

 ``

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