# Maximum difference of prefix sum for all indices of given two Arrays

• Last Updated : 13 Jan, 2022

Given 2 arrays of integers a[] and s[] both of size N. The task is to find the maximum difference of prefix sum for all indices of the given arrays.

Examples:

Input: N = 5, a[] = {20, 20, 35, 20, 35}, s[] = {21, 31, 34, 41, 14}
Output: 32
Explanation: After prefix sum the arrays are a[] = {20, 40, 75, 95, 130}
and b[] = {21, 52, 86, 127, 141} for S. The maximum difference is (127 – 95) = 32 for 4th position.

Input: N = 1, a[] = {32}, s[] = {15}
Output: A, 17
Explanation: The highest difference (since only one element) is 32 – 15 = 17.

Approach: This problem can be solved by calculating the prefix sum in both the arrays and then comparing the differences for every index. Follow the steps below to solve the problem:

• Iterate over the range [0, n) using the variable i and calculate the prefix sum for both the arrays.
• Calculate the difference of prefix sum for every index.
• Return the maximum difference.

Below is the implementation of the above approach.

## C++

 // C++ program for the above approach #include using namespace std;   // Function to get the winner int getWinner(int a[], int s[], int N) {     int maxDiff = abs(a[0] - s[0]);       // Calculating prefix sum     for (int i = 1; i < N; i++) {         a[i] += a[i - 1];         s[i] += s[i - 1];         maxDiff = max(maxDiff,                       abs(a[i] - s[i]));     }       // Return the result     return maxDiff; }   // Driver Code int main() {     int N = 5;       int a[] = { 20, 20, 35, 20, 35 },         s[] = { 21, 31, 34, 41, 14 };       cout << getWinner(a, s, N);     return 0; }

## Java

 // Java program for the above approach class GFG{   // Function to get the winner static int getWinner(int a[], int s[], int N) {     int maxDiff = Math.abs(a[0] - s[0]);       // Calculating prefix sum     for (int i = 1; i < N; i++) {         a[i] += a[i - 1];         s[i] += s[i - 1];         maxDiff = Math.max(maxDiff,                       Math.abs(a[i] - s[i]));     }       // Return the result     return maxDiff; }   // Driver Code public static void main(String[] args) {     int N = 5;       int a[] = { 20, 20, 35, 20, 35 },         s[] = { 21, 31, 34, 41, 14 };       System.out.print(getWinner(a, s, N)); } }   // This code is contributed by Rajput-Ji

## Python3

 # python3 program for the above approach   # Function to get the winner     def getWinner(a, s, N):       maxDiff = abs(a[0] - s[0])       # Calculating prefix sum     for i in range(1, N):         a[i] += a[i - 1]         s[i] += s[i - 1]         maxDiff = max(maxDiff, abs(a[i] - s[i]))       # Return the result     return maxDiff     # Driver Code if __name__ == "__main__":       N = 5       a = [20, 20, 35, 20, 35]     s = [21, 31, 34, 41, 14]       print(getWinner(a, s, N))   # This code is contributed by rakeshsahni

## C#

 // C# program for the above approach using System; class GFG {     // Function to get the winner   static int getWinner(int[] a, int[] s, int N)   {     int maxDiff = Math.Abs(a[0] - s[0]);       // Calculating prefix sum     for (int i = 1; i < N; i++) {       a[i] += a[i - 1];       s[i] += s[i - 1];       maxDiff         = Math.Max(maxDiff, Math.Abs(a[i] - s[i]));     }       // Return the result     return maxDiff;   }     // Driver Code   public static void Main(string[] args)   {     int N = 5;       int[] a = { 20, 20, 35, 20, 35 };     int[] s = { 21, 31, 34, 41, 14 };       Console.WriteLine(getWinner(a, s, N));   } }   // This code is contributed by ukasp.

## Javascript



Output

32

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

My Personal Notes arrow_drop_up
Recommended Articles
Page :