# Sum of the updated array after performing the given operation

Given an array arr[] of N elements, the task is to update all the array elements such that an element arr[i] is updated as arr[i] = arr[i] – X where X = arr[i + 1] + arr[i + 2] + … + arr[N – 1] and finally print the sum of the updated array.

Examples:

Input: arr[] = {40, 25, 12, 10}
Output: 8
The updated array will be {-7, 3, 2, 10}.
-7 + 3 + 2 + 10 = 8

Input: arr[] = {50, 30, 10, 2, 0}
Output: 36

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

Approach: A simple solution is for every possible value of i, update arr[i] = arr[i] – sum(arr[i+1…N-1]).

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Utility function to return ` `// the sum of the array ` `int` `sumArr(``int` `arr[], ``int` `n) ` `{ ` `    ``int` `sum = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``sum += arr[i]; ` `    ``return` `sum; ` `} ` ` `  `// Function to return the sum ` `// of the modified array ` `int` `sumModArr(``int` `arr[], ``int` `n) ` `{ ` ` `  `    ``for` `(``int` `i = 0; i < n - 1; i++) { ` ` `  `        ``// Find the sum of the subarray ` `        ``// arr[i+1...n-1] ` `        ``int` `subSum = 0; ` `        ``for` `(``int` `j = i + 1; j < n; j++) { ` `            ``subSum += arr[j]; ` `        ``} ` ` `  `        ``// Subtract the subarray sum ` `        ``arr[i] -= subSum; ` `    ``} ` ` `  `    ``// Return the sum of ` `    ``// the modified array ` `    ``return` `sumArr(arr, n); ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `arr[] = { 40, 25, 12, 10 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr); ` ` `  `    ``cout << sumModArr(arr, n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach ` `import` `java.util.*; ` ` `  `class` `GFG ` `{ ` ` `  `// Utility function to return ` `// the sum of the array ` `static` `int` `sumArr(``int` `arr[], ``int` `n) ` `{ ` `    ``int` `sum = ``0``; ` `    ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``sum += arr[i]; ` `    ``return` `sum; ` `} ` ` `  `// Function to return the sum ` `// of the modified array ` `static` `int` `sumModArr(``int` `arr[], ``int` `n) ` `{ ` `    ``for` `(``int` `i = ``0``; i < n - ``1``; i++) ` `    ``{ ` ` `  `        ``// Find the sum of the subarray ` `        ``// arr[i+1...n-1] ` `        ``int` `subSum = ``0``; ` `        ``for` `(``int` `j = i + ``1``; j < n; j++) ` `        ``{ ` `            ``subSum += arr[j]; ` `        ``} ` ` `  `        ``// Subtract the subarray sum ` `        ``arr[i] -= subSum; ` `    ``} ` ` `  `    ``// Return the sum of ` `    ``// the modified array ` `    ``return` `sumArr(arr, n); ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String []args) ` `{ ` `    ``int` `arr[] = { ``40``, ``25``, ``12``, ``10` `}; ` `    ``int` `n = arr.length; ` ` `  `    ``System.out.println(sumModArr(arr, n)); ` `} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

## Python3

 `# Python3 implementation of the approach ` ` `  `# Utility function to return ` `# the sum of the array ` `def` `sumArr(arr, n): ` `    ``sum` `=` `0` `    ``for` `i ``in` `range``(n): ` `        ``sum` `+``=` `arr[i] ` `    ``return` `sum` ` `  `# Function to return the sum ` `# of the modified array ` `def` `sumModArr(arr, n): ` ` `  `    ``for` `i ``in` `range``(n ``-` `1``): ` ` `  `        ``# Find the sum of the subarray ` `        ``# arr[i+1...n-1] ` `        ``subSum ``=` `0` `        ``for` `j ``in` `range``(i ``+` `1``, n): ` `            ``subSum ``+``=` `arr[j] ` `             `  `        ``# Subtract the subarray sum ` `        ``arr[i] ``-``=` `subSum ` ` `  `    ``# Return the sum of ` `    ``# the modified array ` `    ``return` `sumArr(arr, n) ` ` `  `# Driver code ` `arr ``=` `[``40``, ``25``, ``12``, ``10``] ` `n ``=` `len``(arr) ` ` `  `print``(sumModArr(arr, n)) ` ` `  `# This code is contributed by Mohit Kumar `

## C#

 `// C# implementation of the approach ` `using` `System; ` ` `  `class` `GFG ` `{ ` ` `  `    ``// Utility function to return ` `    ``// the sum of the array ` `    ``static` `int` `sumArr(``int` `[]arr, ``int` `n) ` `    ``{ ` `        ``int` `sum = 0; ` `        ``for` `(``int` `i = 0; i < n; i++) ` `            ``sum += arr[i]; ` `        ``return` `sum; ` `    ``} ` `     `  `    ``// Function to return the sum ` `    ``// of the modified array ` `    ``static` `int` `sumModArr(``int` `[]arr, ``int` `n) ` `    ``{ ` `        ``for` `(``int` `i = 0; i < n - 1; i++) ` `        ``{ ` `     `  `            ``// Find the sum of the subarray ` `            ``// arr[i+1...n-1] ` `            ``int` `subSum = 0; ` `            ``for` `(``int` `j = i + 1; j < n; j++) ` `            ``{ ` `                ``subSum += arr[j]; ` `            ``} ` `     `  `            ``// Subtract the subarray sum ` `            ``arr[i] -= subSum; ` `        ``} ` `     `  `        ``// Return the sum of ` `        ``// the modified array ` `        ``return` `sumArr(arr, n); ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int` `[]arr = { 40, 25, 12, 10 }; ` `        ``int` `n = arr.Length; ` `     `  `        ``Console.WriteLine(sumModArr(arr, n)); ` `    ``} ` `} ` ` `  `// This code is contributed by AnkitRai01 `

Output:

```8
```

Time Complexity: O(N2)

Efficient approach: An efficient solution is to traverse the array from the end so that the sum of the subarray till now i.e. sum(arr[i+1…n-1]) can be used to calculate the sum of the current subarray arr[i…n-1] i.e. sum(arr[i…n-1]) = arr[i] + sum(arr[i+1…n-1]).

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Utility function to return ` `// the sum of the array ` `int` `sumArr(``int` `arr[], ``int` `n) ` `{ ` `    ``int` `sum = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``sum += arr[i]; ` `    ``return` `sum; ` `} ` ` `  `// Function to return the sum ` `// of the modified array ` `int` `sumModArr(``int` `arr[], ``int` `n) ` `{ ` ` `  `    ``int` `subSum = arr[n - 1]; ` `    ``for` `(``int` `i = n - 2; i >= 0; i--) { ` ` `  `        ``int` `curr = arr[i]; ` ` `  `        ``// Subtract the subarray sum ` `        ``arr[i] -= subSum; ` ` `  `        ``// Sum of subarray arr[i...n-1] ` `        ``subSum += curr; ` `    ``} ` ` `  `    ``// Return the sum of ` `    ``// the modified array ` `    ``return` `sumArr(arr, n); ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `arr[] = { 40, 25, 12, 10 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr); ` ` `  `    ``cout << sumModArr(arr, n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach ` `class` `GFG  ` `{ ` `     `  `    ``// Utility function to return  ` `    ``// the sum of the array  ` `    ``static` `int` `sumArr(``int` `arr[], ``int` `n)  ` `    ``{  ` `        ``int` `sum = ``0``;  ` `        ``for` `(``int` `i = ``0``; i < n; i++)  ` `            ``sum += arr[i];  ` `        ``return` `sum;  ` `    ``}  ` `     `  `    ``// Function to return the sum  ` `    ``// of the modified array  ` `    ``static` `int` `sumModArr(``int` `arr[], ``int` `n)  ` `    ``{  ` `        ``int` `subSum = arr[n - ``1``];  ` `        ``for` `(``int` `i = n - ``2``; i >= ``0``; i--) ` `        ``{  ` `            ``int` `curr = arr[i];  ` `     `  `            ``// Subtract the subarray sum  ` `            ``arr[i] -= subSum;  ` `     `  `            ``// Sum of subarray arr[i...n-1]  ` `            ``subSum += curr;  ` `        ``}  ` `     `  `        ``// Return the sum of  ` `        ``// the modified array  ` `        ``return` `sumArr(arr, n);  ` `    ``}  ` `     `  `    ``// Driver code  ` `    ``public` `static` `void` `main (String[] args)  ` `    ``{  ` `        ``int` `[]arr = { ``40``, ``25``, ``12``, ``10` `};  ` `        ``int` `n = arr.length;  ` `     `  `        ``System.out.println(sumModArr(arr, n));  ` `    ``}  ` `} ` ` `  `// This code is contributed by kanugargng `

## Python3

 `# Python3 implementation of the approach ` ` `  `# Utility function to return ` `# the sum of the array ` `def` `sumArr(arr, n): ` ` `  `    ``sum` `=` `0``; ` `    ``for` `i ``in` `range``(n): ` `        ``sum` `+``=` `arr[i]; ` `    ``return` `sum``; ` ` `  `# Function to return the sum ` `# of the modified array ` `def` `sumModArr(arr, n): ` ` `  `    ``subSum ``=` `arr[n ``-` `1``]; ` `    ``for` `i ``in` `range``(n ``-` `2``, ``-``1``, ``-``1``): ` ` `  `        ``curr ``=` `arr[i]; ` ` `  `        ``# Subtract the subarray sum ` `        ``arr[i] ``-``=` `subSum; ` ` `  `        ``# Sum of subarray arr[i...n-1] ` `        ``subSum ``+``=` `curr; ` ` `  `    ``# Return the sum of ` `    ``# the modified array ` `    ``return` `sumArr(arr, n); ` ` `  `# Driver code ` `arr ``=` `[``40``, ``25``, ``12``, ``10` `]; ` `n ``=` `len``(arr); ` ` `  `print``(sumModArr(arr, n)); ` ` `  `# This code is contributed by 29AjayKumar `

## C#

 `// C# implementation of the approach ` `using` `System; ` `     `  `class` `GFG  ` `{ ` `     `  `    ``// Utility function to return  ` `    ``// the sum of the array  ` `    ``static` `int` `sumArr(``int` `[]arr, ``int` `n)  ` `    ``{  ` `        ``int` `sum = 0;  ` `        ``for` `(``int` `i = 0; i < n; i++)  ` `            ``sum += arr[i];  ` `        ``return` `sum;  ` `    ``}  ` `     `  `    ``// Function to return the sum  ` `    ``// of the modified array  ` `    ``static` `int` `sumModArr(``int` `[]arr, ``int` `n)  ` `    ``{  ` `        ``int` `subSum = arr[n - 1];  ` `        ``for` `(``int` `i = n - 2; i >= 0; i--) ` `        ``{  ` `            ``int` `curr = arr[i];  ` `     `  `            ``// Subtract the subarray sum  ` `            ``arr[i] -= subSum;  ` `     `  `            ``// Sum of subarray arr[i...n-1]  ` `            ``subSum += curr;  ` `        ``}  ` `     `  `        ``// Return the sum of  ` `        ``// the modified array  ` `        ``return` `sumArr(arr, n);  ` `    ``}  ` `     `  `    ``// Driver code  ` `    ``public` `static` `void` `Main (String[] args)  ` `    ``{  ` `        ``int` `[]arr = { 40, 25, 12, 10 };  ` `        ``int` `n = arr.Length;  ` `     `  `        ``Console.WriteLine(sumModArr(arr, n));  ` `    ``}  ` `} ` ` `  `// This code is contributed by 29AjayKumar `

Output:

```8
```

Time Complexity: 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.