# Construct array with sum of product of same indexed elements in the given array equal to zero

Given an array, arr[] of size N (always even), the task is to construct a new array consisting of N non-zero integers such that the sum of the product of the same indexed elements of arr[] and the new array is equal to 0. If multiple solutions exist, print any one of them.

Examples:

Input: arr[] = {1, 2, 3, 4}
Output: -4 -3 2 1
Explanation:
Sum of product of same indexed array elements of arr[] with the new array = {1 * (-4) + 2 * (-3) + 3 * (2) + 4 * (1)} = 0.
Therefore, the required output is -4 -3 2 1.

Input: arr[] = {-1, 2, -3, 6, 4}
Output: 1 1 1 1 -1

Approach: The problem can be solved using the Greedy technique. The idea is based on the following observations:

arr[i] * (-arr[i + 1]) + arr[i + 1] * arr[i] = 0

Follow the steps below to solve the problem:

• Initialize an array, say newArr[] to store the new array elements such that Σ(arr[i] * newArr[i]) = 0
• Traverse the given array using variable i and check if i is even or not. If found to be true then newArr[i] = arr[i + 1].
• Otherwise, newArr[i] = -arr[i – 1]
• Finally, print the values of newArr[].

Below is the implementation of the above approach

## C++

 `// C++ program to implement` `// the above approach`   `#include ` `using` `namespace` `std;`   `// Function to generate a new array with product` `// of same indexed elements with arr[] equal to 0` `void` `constructNewArraySumZero(``int` `arr[], ``int` `N)` `{` `    ``// Stores sum of same indexed array` `    ``// elements of arr and new array` `    ``int` `newArr[N];`   `    ``// Traverse the array` `    ``for` `(``int` `i = 0; i < N; i++) {`   `        ``// If i is an even number` `        ``if` `(i % 2 == 0) {`   `            ``// Insert arr[i + 1] into` `            ``// the new array newArr[]` `            ``newArr[i] = arr[i + 1];` `        ``}`   `        ``else` `{`   `            ``// Insert -arr[i - 1] into` `            ``// the new array newArr[]` `            ``newArr[i] = -arr[i - 1];` `        ``}` `    ``}`   `    ``// Print new array elements` `    ``for` `(``int` `i = 0; i < N; i++) {` `        ``cout << newArr[i] << ``" "``;` `    ``}` `}`   `// Driver Code` `int` `main()` `{` `    ``int` `arr[] = { 1, 2, 3, -5, -6, 8 };` `    ``int` `N = ``sizeof``(arr) / ``sizeof``(arr);`   `    ``constructNewArraySumZero(arr, N);`   `    ``return` `0;` `}`

## Java

 `// Java program to implement` `// the above approach` `import` `java.util.*;` ` `  `class` `GFG{` ` `  `// Function to generate a new array with` `// product of same indexed elements with ` `// arr[] equal to 0` `static` `void` `constructNewArraySumZero(``int` `arr[],` `                                     ``int` `N)` `{` `    `  `    ``// Stores sum of same indexed array` `    ``// elements of arr and new array` `    ``int` `newArr[] = ``new` `int``[N];` ` `  `    ``// Traverse the array` `    ``for``(``int` `i = ``0``; i < N; i++) ` `    ``{` `        `  `        ``// If i is an even number` `        ``if` `(i % ``2` `== ``0``)` `        ``{` `            `  `            ``// Insert arr[i + 1] into` `            ``// the new array newArr[]` `            ``newArr[i] = arr[i + ``1``];` `        ``}` `        ``else` `        ``{` `            `  `            ``// Insert -arr[i - 1] into` `            ``// the new array newArr[]` `            ``newArr[i] = -arr[i - ``1``];` `        ``}` `    ``}` ` `  `    ``// Print new array elements` `    ``for``(``int` `i = ``0``; i < N; i++) ` `    ``{` `        ``System.out.print(newArr[i] + ``" "``);` `    ``}` `}` ` `  `// Driver Code` `public` `static` `void` `main(String[] args)` `{` `    ``int` `arr[] = { ``1``, ``2``, ``3``, -``5``, -``6``, ``8` `};` `    ``int` `N = arr.length;` ` `  `    ``constructNewArraySumZero(arr, N);` `}` `}` ` `  `// This code is contributed by susmitakundugoaldanga`

## Python3

 `# Python3 program to implement` `# the above approach`   `# Function to generate a new array` `# with product of same indexed elements ` `# with arr[] equal to 0` `def` `constructNewArraySumZero(arr, N):`   `    ``# Stores sum of same indexed array` `    ``# elements of arr and new array` `    ``newArr ``=` `[``0``] ``*` `N`   `    ``# Traverse the array` `    ``for` `i ``in` `range``(N):` `        `  `        ``# If i is an even number` `        ``if` `(i ``%` `2` `=``=` `0``):`   `            ``# Insert arr[i + 1] into` `            ``# the new array newArr[]` `            ``newArr[i] ``=` `arr[i ``+` `1``]`   `        ``else``:`   `            ``# Insert -arr[i - 1] into` `            ``# the new array newArr[]` `            ``newArr[i] ``=` `-``arr[i ``-` `1``]`   `    ``# Print new array elements` `    ``for` `i ``in` `range``(N):` `        ``print``(newArr[i] , ` `              ``end ``=` `" "``)`   `# Driver code` `arr ``=` `[``1``, ``2``, ``3``, ``-``5``, ``-``6``, ``8``]` `N ``=` `len``(arr)` `constructNewArraySumZero(arr, N)`   `# This code is contributed by divyeshrabadiya07`

## C#

 `// C# program to implement` `// the above approach  ` `using` `System;` `  `  `class` `GFG{` `  `  `// Function to generate a new array with` `// product of same indexed elements with ` `// arr[] equal to 0` `static` `void` `constructNewArraySumZero(``int``[] arr,` `                                     ``int` `N)` `{` `    `  `    ``// Stores sum of same indexed array` `    ``// elements of arr and new array` `    ``int``[] newArr = ``new` `int``[N];` `  `  `    ``// Traverse the array` `    ``for``(``int` `i = 0; i < N; i++) ` `    ``{` `         `  `        ``// If i is an even number` `        ``if` `(i % 2 == 0)` `        ``{` `            `  `            ``// Insert arr[i + 1] into` `            ``// the new array newArr[]` `            ``newArr[i] = arr[i + 1];` `        ``}` `        ``else` `        ``{` `             `  `            ``// Insert -arr[i - 1] into` `            ``// the new array newArr[]` `            ``newArr[i] = -arr[i - 1];` `        ``}` `    ``}` `  `  `    ``// Print new array elements` `    ``for``(``int` `i = 0; i < N; i++) ` `    ``{` `        ``Console.Write(newArr[i] + ``" "``);` `    ``}` `}` `  `  `// Driver Code` `public` `static` `void` `Main()` `{` `    ``int``[] arr = { 1, 2, 3, -5, -6, 8 };` `    ``int` `N = arr.Length;` `  `  `    ``constructNewArraySumZero(arr, N);` `}` `}`   `// This code is contributed by code_hunt`

Output

```2 -1 -5 -3 8 6

```

Time Complexity: O(N)
Auxiliary Space: O(N) My Personal Notes arrow_drop_up Check out this Author's contributed articles.

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.