Open In App

# Minimum value to be assigned to the elements so that sum becomes greater than initial sum

Given an array arr[] of N elements, the task is to update all the elements of the given array to some value X such that the sum of all the updated array elements is strictly greater than the sum of all the elements of the initial array and X is the minimum possible.

Examples:

Input: arr[] = {4, 2, 1, 10, 6}
Output:
Sum of original array = 4 + 2 + 1 + 10 + 6 = 23
Sum of the modified array = 5 + 5 + 5 + 5 + 5 = 25

Input: arr[] = {9876, 8654, 5470, 3567, 7954}
Output: 7105

Approach:

• Find the sum of the original array elements and store it in a variable sumArr
• Calculate X = sumArr / n where n is the number of elements in the array.
• Now, in order to exceed the sum of the original array, every element of the new array has to be at least X + 1.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to return the minimum``// required value``int` `findMinValue(``int` `arr[], ``int` `n)``{` `    ``// Find the sum of the``    ``// array elements``    ``long` `sum = 0;``    ``for` `(``int` `i = 0; i < n; i++)``        ``sum += arr[i];` `    ``// Return the required value``    ``return` `((sum / n) + 1);``}` `// Driver code``int` `main()``{``    ``int` `arr[] = { 4, 2, 1, 10, 6 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(``int``);` `    ``cout << findMinValue(arr, n);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``import` `java.io.*;` `public` `class` `GFG {` `    ``// Function to return the minimum``    ``// required value``    ``static` `int` `findMinValue(``int` `arr[], ``int` `n)``    ``{` `        ``// Find the sum of the``        ``// array elements``        ``long` `sum = ``0``;``        ``for` `(``int` `i = ``0``; i < n; i++)``            ``sum += arr[i];` `        ``// Return the required value``        ``return` `((``int``)(sum / n) + ``1``);``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `arr[] = { ``4``, ``2``, ``1``, ``10``, ``6` `};``        ``int` `n = arr.length;` `        ``System.out.print(findMinValue(arr, n));``    ``}``}`

## Python3

 `# Python3 implementation of the approach` `# Function to return the minimum``# required value``def` `findMinValue(arr, n):``    ` `    ``# Find the sum of the``    ``# array elements``    ``sum` `=` `0``    ``for` `i ``in` `range``(n):``        ``sum` `+``=` `arr[i]``        ` `    ``# Return the required value``    ``return` `(``sum` `/``/` `n) ``+` `1``    ` `# Driver code``arr ``=` `[``4``, ``2``, ``1``, ``10``, ``6``]``n ``=` `len``(arr)``print``(findMinValue(arr, n))`

## C#

 `// C# implementation of the above approach``using` `System;` `class` `GFG``{``    ` `    ``// Function to return the minimum``    ``// required value``    ``static` `int` `findMinValue(``int` `[]arr, ``int` `n)``    ``{` `        ``// Find the sum of the``        ``// array elements``        ``long` `sum = 0;``        ``for` `(``int` `i = 0; i < n; i++)``            ``sum += arr[i];` `        ``// Return the required value``        ``return` `((``int``)(sum / n) + 1);``    ``}` `    ``// Driver code``    ``static` `public` `void` `Main ()``    ``{``        ``int` `[]arr = { 4, 2, 1, 10, 6 };``        ``int` `n = arr.Length;` `        ``Console.WriteLine(findMinValue(arr, n));``    ``}``}       ``        ` `// This code is contributed by AnkitRai01`

## Javascript

 ``

Output:

`5`

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