# Position of Elements which are equal to sum of all Preceding elements

• Last Updated : 10 Mar, 2022

Given an array Arr[] of N of positive integers. The task is to find positions of all the elements which are equal to the sum of all preceding elements. If no such element exists print -1.
Examples:

Input : Arr[] = {1, 2, 3, 6, 3, 15, 5}
Output :3 4 6
Here, the element at index “3” i.e. 3 is equal to the sum of preceding elements (1 + 2).
Similarly, at index 4, 6 = 1+2+3 (sum of all preceding elements).
And element at index 6 i.e. 15 = 1 + 2 + 3 + 6 + 3.
Input: Arr[] = {7, 5, 17, 25}
Output: -1

Approach:
While traversing the array Arr[], maintain a sum variable that store the sum of elements till i – 1. Compare the sum with current element Arr[i]. If it is equal, push the index of this element into the answer vector.
Below is the implementation of the above approach:

## C++

 `// C++ implementation``#include ``using` `namespace` `std;` `// function to return valid indexes``vector<``int``> find_idx(``int` `ar[], ``int` `n)``{` `    ``// Vector to store the answer``    ``vector<``int``> answer;` `    ``// Initial sum would always``    ``// be first element``    ``int` `sum = ar[0];` `    ``for` `(``int` `i = 1; i < n; i++) {` `        ``// Check if sum till now``        ``// is equal to current element``        ``if` `(sum == ar[i]) {``            ``answer.push_back(i + 1);``        ``}` `        ``// Updating the sum by``        ``// adding the current``        ``// element in each``        ``// iteration.``        ``sum += ar[i];``    ``}` `    ``return` `answer;``}` `// Driver code``int` `main()``{``    ``int` `ar[] = { 1, 2, 3, 6, 3, 15, 5 };``    ``int` `n = ``sizeof``(ar) / ``sizeof``(``int``);` `    ``vector<``int``> ans = find_idx(ar, n);` `    ``if` `(ans.size() != 0) {``        ``for` `(``int` `i : ans) {``            ``cout << i << ``" "``;``        ``}``    ``}``    ``else` `{``        ``cout << ``"-1"``;``    ``}` `    ``cout << endl;` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``import` `java.util.*;` `class` `GFG``{``    ` `// function to return valid indexes``static` `Vector find_idx(``int` `ar[], ``int` `n)``{` `    ``// Vector to store the answer``    ``Vector answer = ``new` `Vector();` `    ``// Initial sum would always``    ``// be first element``    ``int` `sum = ar[``0``];` `    ``for` `(``int` `i = ``1``; i < n; i++)``    ``{` `        ``// Check if sum till now``        ``// is equal to current element``        ``if` `(sum == ar[i])``        ``{``            ``answer.add(i + ``1``);``        ``}` `        ``// Updating the sum by adding the``        ``// current element in each iteration.``        ``sum += ar[i];``    ``}``    ``return` `answer;``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `ar[] = { ``1``, ``2``, ``3``, ``6``, ``3``, ``15``, ``5` `};``    ``int` `n = ar.length;` `    ``Vector ans = find_idx(ar, n);` `    ``if` `(ans.size() != ``0``)``    ``{``        ``for` `(``int` `i : ans)``        ``{``            ``System.out.print(i + ``" "``);``        ``}``    ``}``    ``else``    ``{``        ``System.out.println(``"-1"``);``    ``}``}``}` `// This code is contributed by 29AjayKumar`

## Python3

 `# Python3 implementation of the above approach` `# function to return valid indexes``def` `find_idx(ar, n) :` `    ``# Vector to store the answer``    ``answer ``=` `[];` `    ``# Initial sum would always``    ``# be first element``    ``sum` `=` `ar[``0``];` `    ``for` `i ``in` `range``(``1``, n) :` `        ``# Check if sum till now``        ``# is equal to current element``        ``if` `(``sum` `=``=` `ar[i]) :``            ``answer.append(i ``+` `1``);` `        ``# Updating the sum by``        ``# adding the current``        ``# element in each``        ``# iteration.``        ``sum` `+``=` `ar[i];` `    ``return` `answer;` `# Driver code``if` `__name__ ``=``=` `"__main__"` `:` `    ``ar ``=` `[ ``1``, ``2``, ``3``, ``6``, ``3``, ``15``, ``5` `];``    ``n ``=` `len``(ar);` `    ``ans ``=` `find_idx(ar, n);` `    ``if` `(``len``(ans) !``=` `0``) :``        ` `        ``for` `i ``in` `ans :``            ``print``(i, end ``=` `" "``);``            ` `    ``else` `:``        ` `        ``print``(``"-1"``);` `    ``print``();` `# This code is contributed by AnkitRai01`

## C#

 `// C# implementation of the approach``using` `System;``using` `System.Collections.Generic;``    ` `class` `GFG``{``    ` `// function to return valid indexes``static` `List<``int``> find_idx(``int` `[]ar, ``int` `n)``{` `    ``// Vector to store the answer``    ``List<``int``> answer = ``new` `List<``int``>();` `    ``// Initial sum would always``    ``// be first element``    ``int` `sum = ar[0];` `    ``for` `(``int` `i = 1; i < n; i++)``    ``{` `        ``// Check if sum till now``        ``// is equal to current element``        ``if` `(sum == ar[i])``        ``{``            ``answer.Add(i + 1);``        ``}` `        ``// Updating the sum by adding the``        ``// current element in each iteration.``        ``sum += ar[i];``    ``}``    ``return` `answer;``}` `// Driver code``public` `static` `void` `Main(String[] args)``{``    ``int` `[]ar = { 1, 2, 3, 6, 3, 15, 5 };``    ``int` `n = ar.Length;` `    ``List<``int``> ans = find_idx(ar, n);` `    ``if` `(ans.Count != 0)``    ``{``        ``foreach` `(``int` `i ``in` `ans)``        ``{``            ``Console.Write(i + ``" "``);``        ``}``    ``}``    ``else``    ``{``        ``Console.WriteLine(``"-1"``);``    ``}``}``}` `// This code is contributed by Princi Singh`

## Javascript

 ``

Output:

`3 4 6`

Time Complexity: O(n)
Auxiliary Space: O(n)

My Personal Notes arrow_drop_up