# 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 = 4Output:1 2 5 4Explanation:

Even elements of the array – {2, 4}, S(even) = 6

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

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)

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

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

`<script>` ` ` `// JavaScript 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` `function` `findSolution(N)` `{` ` ` ` ` `// Length of array which is not` ` ` `// divisible by 4 is unable to` ` ` `// form such array` ` ` `if` `(N % 4 != 0)` ` ` `document.write(-1 + ` `"<br>"` `);` ` ` `else` `{` ` ` `let temp = 0, sum_odd = 0,` ` ` `sum_even = 0;` ` ` `let result = ` `new` `Uint8Array(N);` ` ` ` ` `// Loop to find the resulted` ` ` `// array containing the same` ` ` `// count of even and odd elements` ` ` `for` `(let 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` ` ` `let diff = sum_even - sum_odd;` ` ` ` ` `// The difference will be added` ` ` `// in the last odd element` ` ` `result[N - 2] += diff;` ` ` ` ` `for` `(let i = 0; i < N; i++)` ` ` `document.write(result[i] + ` `" "` `);` ` ` `document.write(` `"<br>"` `);` ` ` `}` `}` ` ` `// Driver Code` ` ` `let N = 8;` ` ` `findSolution(N);` ` ` ` ` ` ` `// This code is contributed by Surbhi Tyagi.` `</script>` |

**Output:**

1 2 3 4 5 6 11 8

**Performance Analysis:**