# Maximize difference between maximum and minimum array elements after K operations

• Last Updated : 08 Apr, 2021

Given an array arr[] of size N and a positive integer K, the task is to find the maximum difference between the largest element and the smallest element in the array by incrementing or decrementing array elements by 1, K times.

Examples:

Input: arr[] = {7, 7, 7, 7}, K = 1
Output: 14
Explanation: Decrementing the value of arr and incrementing the value of arr by 7 modifies arr[] = {0, 7, 7, 14}. Therefore, the maximum difference between the largest element and the smallest element of the array is 14

Input: arr[] = {0, 0, 0, 0, 0}, K = 2
Output: 0
Explanation: Since all array elements are 0, decrementing any array element makes that element less than 0. Therefore, the required output is 0.

Approach: Follow the steps below to solve the problem:

Below is the implementation of the above approach:

## C++

 `// C++ program to implement` `// the above approach`   `#include ` `using` `namespace` `std;`   `// Function to find the maximum difference` `// between the maximum and minimum in the` `// array after K operations` `int` `maxDiffLargSmallOper(``int` `arr[],` `                         ``int` `N, ``int` `K)` `{` `    ``// Stores maximum difference between` `    ``// largest  and smallest array element` `    ``int` `maxDiff = 0;`   `    ``// Sort the array in descending order` `    ``sort(arr, arr + N, greater<``int``>());`   `    ``// Traverse the array arr[]` `    ``for` `(``int` `i = 0; i <= min(K, N - 1);` `         ``i++) {`   `        ``// Update maxDiff` `        ``maxDiff += arr[i];` `    ``}`   `    ``return` `maxDiff;` `}`   `// Driver Code` `int` `main()` `{`   `    ``int` `arr[] = { 7, 7, 7, 7 };` `    ``int` `N = ``sizeof``(arr)` `            ``/ ``sizeof``(arr);` `    ``int` `K = 1;` `    ``cout << maxDiffLargSmallOper(arr, N, K);`   `    ``return` `0;` `}`

## Java

 `// Java program to implement` `// the above approach` `import` `java.util.*;`   `class` `GFG{` `    `  `// Reverse array` `static` `int``[] reverse(``int` `a[])` `{` `    ``int` `i, n = a.length, t;` `    ``for``(i = ``0``; i < n / ``2``; i++) ` `    ``{` `        ``t = a[i];` `        ``a[i] = a[n - i - ``1``];` `        ``a[n - i - ``1``] = t;` `    ``}` `    ``return` `a;` `}`   `// Function to find the maximum difference` `// between the maximum and minimum in the` `// array after K operations` `static` `int` `maxDiffLargSmallOper(``int` `arr[],` `                                ``int` `N, ``int` `K)` `{` `    `  `    ``// Stores maximum difference between` `    ``// largest  and smallest array element` `    ``int` `maxDiff = ``0``;`   `    ``// Sort the array in descending order` `    ``Arrays.sort(arr);` `    ``arr = reverse(arr);` `    `  `    ``// Traverse the array arr[]` `    ``for``(``int` `i = ``0``; i <= Math.min(K, N - ``1``); i++) ` `    ``{` `        `  `        ``// Update maxDiff` `        ``maxDiff += arr[i];` `    ``}` `    `  `    ``return` `maxDiff;` `}`   `// Driver Code` `public` `static` `void` `main(String[] args)` `{` `    ``int` `arr[] = { ``7``, ``7``, ``7``, ``7` `};` `    ``int` `N = arr.length;` `    ``int` `K = ``1``;` `    `  `    ``System.out.print(maxDiffLargSmallOper(arr, N, K));` `}` `}`   `// This code is contributed by Amit Katiyar`

## Python3

 `# Python3 program to implement` `# the above approach`   `# Function to find the maximum difference` `# between the maximum and minimum in the` `# array after K operations` `def` `maxDiffLargSmallOper(arr, N, K):` `    `  `    `  `    ``# Stores maximum difference between` `    ``# largest  and smallest array element` `    ``maxDiff ``=` `0``;` `    `  `    ``# Sort the array in descending order` `    ``arr.sort(reverse ``=` `True``);` `    `  `    `  `    ``# Traverse the array arr[]` `    ``for` `i  ``in`  `range``(``min``(K ``+` `1``, N)):` `        `  `        ``# Update maxDiff` `        ``maxDiff ``+``=` `arr[i];` `    `  `    ``return` `maxDiff;`   `# Driver Code` `if` `__name__ ``=``=` `"__main__"``:  `   `    ``arr ``=` `[ ``7``, ``7``, ``7``, ``7` `];` `    ``N ``=` `len``(arr)` `    ``K ``=` `1``;` `    ``print``(maxDiffLargSmallOper(arr, N, K));`

## C#

 `// C# program to implement ` `// the above approach ` `using` `System;`   `class` `GFG{`   `// Function to find the maximum difference` `// between the maximum and minimum in the` `// array after K operations` `static` `int` `maxDiffLargSmallOper(``int` `[]arr, ``int` `N, ` `                                ``int` `K)` `{` `    `  `    ``// Stores maximum difference between` `    ``// largest and smallest array element` `    ``int` `maxDiff = 0;`   `    ``// Sort the array in descending order` `    ``Array.Sort(arr);` `    ``Array.Reverse(arr);` `    `  `    ``// Traverse the array arr[]` `    ``for``(``int` `i = 0; i <= Math.Min(K, N - 1); i++)` `    ``{` `        `  `        ``// Update maxDiff` `        ``maxDiff += arr[i];` `    ``}` `    ``return` `maxDiff;` `}`   `// Driver code` `public` `static` `void` `Main()` `{` `    ``int` `[] arr = ``new` `int``[]{ 7, 7, 7, 7 };` `    ``int` `N = arr.Length;` `    ``int` `K = 1;` `    `  `    ``Console.Write(maxDiffLargSmallOper(arr, N, K));` `}` `}`   `// This code is contributed by mohit kumar 29`

## Javascript

 ``

Output:

`14`

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

My Personal Notes arrow_drop_up
Recommended Articles
Page :