
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
Maximize value of (arr[i] β i) β (arr[j] β j) in an array in C++
Problem statement
Given an array, arr[] find the maximum value of (arr[i] – i) – (arr[j] – j) where i is not equal to j. Where i and j vary from 0 to n-1 and n is the size of input array arr[].
If the input array is {7, 5, 10, 2, 3} then we can obtain 9 maximum value as follows−
(element 10 – index 2) - (element 2 – index 3) (10 – 2) – (2 – 3) = 8 – (-1) = 9
Algorithm
1. Find maximum value of (arr[i] – i) in whole array. 2. Find minimum value of (arr[i] – i) in whole array. 3. Return difference of above two values
Example
#include <bits/stdc++.h> using namespace std; int getMaxDiff(int *arr, int n){ if (n < 2) { cout << "Invalid input" << endl; exit(1); } int minVal = INT_MAX; int maxVal = INT_MIN; for (int i = 0; i < n; ++i) { int result = arr[i] - i; if (result > maxVal) { cout << "Max = " << arr[i] << " - " << i << endl; maxVal = result; } if (result < minVal) { cout << "Min = " << arr[i] << " - " << i << endl; minVal = result; } } return (maxVal - minVal); } int main(){ int arr[] = {7, 5, 10, 2, 3}; int n = sizeof(arr) / sizeof(arr[0]); cout << "Maximum value = " << getMaxDiff(arr, n) << endl; return 0; }
Output
When you compile and execute the above program. It generates the following output −
Maximum value = Max = 7 - 0 Min = 7 - 0 Min = 5 - 1 Max = 10 - 2 Min = 2 - 3 9
- Related Articles
- Find Maximum value of abs(i β j) * min(arr[i], arr[j]) in an array arr[] in C++
- Maximize arr[j] β arr[i] + arr[l] β arr[k], such that i < j < k < l in C++
- Maximum value of |arr[i] β arr[j] - + |i β j| in C++
- Count number of pairs (i, j) such that arr[i] * arr[j] > arr[i] + arr[j] in C++
- Count pairs in an array such that LCM(arr[i], arr[j]) > min(arr[i],arr[j]) in C++
- Count pairs in an array that hold i*arr[i] > j*arr[j] in C++
- Rearrange an array such that βarr[j]β becomes βiβ if βarr[i]β is βjβ in C++
- Maximum value of arr[i] % arr[j] for a given array in C++
- Count of unique pairs (arr[i], arr[j]) such that i < j in C++
- Count the number of pairs (i, j) such that either arr[i] is divisible by arr[j] or arr[j] is divisible by arr[i] in C++
- Rearrange array such that arr[i] >= arr[j] if i is even and arr[i]
- Maximum modulo of all the pairs of array where arr[i] >= arr[j] in C++
- Rearrange an Array to Maximize i*arr[i] using C++
- Maximize the sum of arr[i]*i in C++
- Rearrange an array so that arr[i] becomes arr[arr[i]] with O(1) extra space using C++

Advertisements