Maximum absolute difference of value and index sums in C

We are given with an array of integers. The task is to calculate the maximum absolute difference of value and index sums. That is for each pair of indexes (i,j) in an array, we have to calculate | Arr[i] - A[j] | + |i-j| and find the maximum such sum possible. Here |A| means absolute value of A. If array has 4 elements then indexes are 0,1,2,3 and unique pairs will be ( (0,0), (1,1), (2,2), (3,3), (0,1), (0,2), (0,3), (1,2), (1,3), (2,3) ).
Input − Arr[] = { 1,2,4,5 }
Output − Maximum absolute difference of value and index sums − 7
Explanation − Index pairs and | A[i]-A[j] | + | i-j | are as follows
1. (0,0), (1,1), (2,2), (3,3)--------- |i-j| for each is 0.
2. (0,1)---------- |1-2| + |0-1|= 1+1 = 2
3. (0,2)---------- |1-4| + |0-2|= 3+2 = 5
4. (0,3)---------- |1-5| + |0-3|= 4+3 = 7
5. (1,2)---------- |2-4| + |1-2|= 2+1 = 3
6. (1,3)---------- |2-5| + |1-3|= 3+2 = 5
7. (2,3)---------- |4-5| + |2-3|= 1+1 = 2
Maximum value of such a sum is 7.
Input − Arr[] = { 10,20,21 }
Output − Maximum absolute difference of value and index sums − 13
Explanation − Index pairs and | A[i]-A[j] | + | i-j | are as follows
1. (0,0), (1,1), (2,2)--------- |i-j| for each is 0.
2. (0,1)---------- |10-20| + |0-1|= 10+1 = 11
3. (0,2)---------- |10-21| + |0-2|= 11+2 = 13
4. (1,2)---------- |20-21| + |1-2|= 1+1 = 2
Maximum value of such a sum is 13.
We take an integer array having numbers as Arr[]
We take an integer array having numbers as Arr[]
The function maxabsDiff( int arr[],int n) is used to calculate the maximum absolute difference of value and index sums..
The function maxabsDiff( int arr[],int n) is used to calculate the maximum absolute difference of value and index sums..
We initialize the variable result with -1.
We initialize the variable result with -1.
Inside the for loop traverse the array of integers from the beginning.
Inside the for loop traverse the array of integers from the beginning.
In nested for loop traverse the remaining elements and calculate the absolute sum of element value and indexes i,j (abs(arr[i] - arr[j]) + abs(i - j)) and store in a variable say absDiff.
In nested for loop traverse the remaining elements and calculate the absolute sum of element value and indexes i,j (abs(arr[i] - arr[j]) + abs(i - j)) and store in a variable say absDiff.
If this new calculated sum is more than the previous one then store it in ‘result’.
If this new calculated sum is more than the previous one then store it in ‘result’.
Return result after traversing the whole array.
Return result after traversing the whole array.
 Live Demo
#include <stdio.h>
#include <math.h>
// Function to return maximum absolute difference
int maxabsDiff(int arr[], int n){
   int result = 0;
   for (int i = 0; i < n; i++) {
      for (int j = i; j < n; j++) {
         int absDiff= abs(arr[i] - arr[j]) + abs(i - j);
         if (absDiff > result)
            result = absDiff;
      }
   }
   return result;
}
int main(){
   int Arr[] = {1,2,4,1,3,4,2,5,6,5};
   printf("Maximum absolute difference of value and index sums: %d", maxabsDiff(Arr,10));
   return 0;
}
If we run the above code it will generate the following output −
Maximum absolute difference of value and index sums: 13