# Minimum change in given value so that it lies in all given Ranges

Given an array of ranges arr[] of length N and a number D, the task is to find the minimum amount by which the number D sould be changed such that D lies in every range of given array. Here a range consists of two integer [start, end] and D is said to be inside of range, if start ≤ D ≤ end.

Examples:

Input: N = 3, D = 3
arr[] = {{0, 7}, {2, 14}, {4, 6}}
Output: 1
Explanation:
Here if we increment D by 1 then it will be inside of every range that is start ≤ D ≤ end.

Input: N = 2, D = 2
arr[] = {{1, 2}, {3, 2}}
Output: 0
Explanation:
Here D = 2 which is already inside of every range that is start ≤ D ≤ end.

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Appproach:

• Iterate over the array of ranges and to find the maximum value of the start[i] and the minimum value of the end[i] where the final max_start and min_end will show the common range of the given array of ranges.
• Check that D is already inside of the max_start and the min_end computed.
1. If D is already inside of the range, then the minimum difference is 0.
2. Else find the nearest value to D out of max_start and min_end that is
`min(abs(D - max_start), abs(D - min_end))` Below is the code of the above approach:

## C++

 `// C++ implementation find the minimum ` `// difference in the number D such that ` `// D is inside of every range ` ` `  `#include ` `using` `namespace` `std; ` ` `  `// Function to find the minimum ` `// difference in the number D such that ` `// D is inside of every range ` `void` `findMinimumOperation(``int` `n, ``int` `d, ` `                      ``int` `arrays){ ` `    ``int` `cnt = 0; ` `    ``int` `first = INT_MIN, end = INT_MAX; ` ` `  `    ``// Loop to find the common range out  ` `    ``// of the given array of ranges. ` `    ``while` `(n--) { ` `         `  `        ``// Storing the start and end index ` `        ``int` `arr = { arrays[cnt], ` `                        ``arrays[cnt] }; ` ` `  `        ``// Sorting the range ` `        ``sort(arr, arr + 2); ` ` `  `        ``// Finding the maximum starting  ` `        ``// value of common segment ` `        ``first = max(first, arr); ` ` `  `        ``// Finding the minimum ending  ` `        ``// value of common segment ` `        ``end = min(end, arr); ` `        ``cnt++; ` `    ``} ` ` `  `    ``// If there is no common segment ` `    ``if` `(first > end) ` `        ``cout << ``"-1"``; ` ` `  `    ``else` `{ ` `         `  `        ``// If the given number is between ` `        ``// the computed common range. ` `        ``if` `(d >= first && d <= end) { ` `            ``cout << ``"0"``; ` `        ``} ` ` `  `        ``// Finding the minimum distance ` `        ``else` `            ``cout << min(``abs``(first - d), ` `                          ``abs``(d - end)); ` `    ``} ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` `    ``int` `n = 3, d = 3; ` ` `  `    ``// Given array of ranges ` `    ``int` `arrays = { ` `        ``{ 0, 7 }, ` `        ``{ 2, 14 }, ` `        ``{ 4, 6 } ` `    ``}; ` `    ``findMinimumOperation(n, d, arrays); ` `} `

## Java

 `// Java implementation find the minimum ` `// difference in the number D such that ` `// D is inside of every range ` `import` `java.util.*;  ` ` `  `class` `GFG ` `{ ` ` `  `// Function to find the minimum ` `// difference in the number D such that ` `// D is inside of every range ` `static` `void` `findMinimumOperation(``int` `n, ``int` `d, ` `                    ``int` `arrays[][]){ ` `    ``int` `cnt = ``0``; ` `    ``int` `first = Integer.MIN_VALUE, end = Integer.MAX_VALUE; ` ` `  `    ``// Loop to find the common range out  ` `    ``// of the given array of ranges. ` `    ``while` `(n > ``0``) { ` `         `  `        ``// Storing the start and end index ` `        ``int` `arr[] = { arrays[cnt][``0``], ` `                        ``arrays[cnt][``1``] }; ` ` `  `        ``// Sorting the range ` `        ``Arrays.sort(arr); ` ` `  `        ``// Finding the maximum starting  ` `        ``// value of common segment ` `        ``first = Math.max(first, arr[``0``]); ` ` `  `        ``// Finding the minimum ending  ` `        ``// value of common segment ` `        ``end = Math.min(end, arr[``1``]); ` `        ``cnt++; ` `        ``n--; ` `    ``} ` ` `  `    ``// If there is no common segment ` `    ``if` `(first > end) ` `        ``System.out.print(``"-1"``); ` ` `  `    ``else` `{ ` `         `  `        ``// If the given number is between ` `        ``// the computed common range. ` `        ``if` `(d >= first && d <= end) { ` `            ``System.out.print(``"0"``); ` `        ``} ` ` `  `        ``// Finding the minimum distance ` `        ``else` `            ``System.out.print(Math.min(Math.abs(first - d), ` `                        ``Math.abs(d - end))); ` `    ``} ` `} ` ` `  `// Driver Code ` `public` `static` `void` `main (String []args) ` `{ ` `    ``int` `n = ``3``, d = ``3``; ` ` `  `    ``// Given array of ranges ` `    ``int` `arrays[][] = { ` `        ``{ ``0``, ``7` `}, ` `        ``{ ``2``, ``14` `}, ` `        ``{ ``4``, ``6` `} ` `    ``}; ` `    ``findMinimumOperation(n, d, arrays); ` `} ` `} ` ` `  `// This code is contributed by chitranayal `

## Python3

 `# Python3 implementation find the minimum ` `# difference in the number D such that ` `# D is inside of every range ` ` `  `# Function to find the minimum ` `# difference in the number D such that ` `# D is inside of every range ` `def` `findMinimumOperation(n, d,arrays): ` `    ``cnt ``=` `0` `    ``first ``=` `-``10``*``*``9` `    ``end ``=` `10``*``*``9` ` `  `    ``# Loop to find the common range out ` `    ``# of the given array of ranges. ` `    ``while` `(n): ` ` `  `        ``# Storing the start and end index ` `        ``arr ``=` `[arrays[cnt][``0``],arrays[cnt][``1``]] ` ` `  `        ``# Sorting the range ` `        ``arr ``=` `sorted``(arr) ` ` `  `        ``# Finding the maximum starting ` `        ``# value of common segment ` `        ``first ``=` `max``(first, arr[``0``]) ` ` `  `        ``# Finding the minimum ending ` `        ``# value of common segment ` `        ``end ``=` `min``(end, arr[``1``]) ` `        ``cnt ``+``=` `1` `        ``n ``-``=` `1` ` `  `    ``# If there is no common segment ` `    ``if` `(first > end): ` `        ``print``(``"-1"``,end``=``"") ` ` `  `    ``else``: ` ` `  `        ``# If the given number is between ` `        ``# the computed common range. ` `        ``if` `(d >``=` `first ``and` `d <``=` `end): ` `            ``print``(``"0"``,end``=``"") ` ` `  `        ``# Finding the minimum distance ` `        ``else``: ` `            ``print``(``min``(``abs``(first ``-` `d),``abs``(d ``-` `end)),end``=``"") ` ` `  `# Driver Code ` `if` `__name__ ``=``=` `'__main__'``: ` `    ``n ``=` `3` `    ``d ``=` `3` ` `  `    ``# Given array of ranges ` `    ``arrays``=``[[``0``, ``7``], ` `            ``[``2``, ``14``], ` `            ``[``4``, ``6``] ] ` ` `  `    ``findMinimumOperation(n, d, arrays) ` ` `  `# This code is contributed by mohit kumar 29     `

## C#

 `// C# implementation find the minimum ` `// difference in the number D such that ` `// D is inside of every range ` `using` `System; ` ` `  `class` `GFG ` `{ ` `  `  `// Function to find the minimum ` `// difference in the number D such that ` `// D is inside of every range ` `static` `void` `findMinimumOperation(``int` `n, ``int` `d, ` `                    ``int` `[,]arrays){ ` `    ``int` `cnt = 0; ` `    ``int` `first = ``int``.MinValue, end = ``int``.MaxValue; ` `  `  `    ``// Loop to find the common range out  ` `    ``// of the given array of ranges. ` `    ``while` `(n > 0) { ` `          `  `        ``// Storing the start and end index ` `        ``int` `[]arr = { arrays[cnt, 0], ` `                        ``arrays[cnt, 1] }; ` `  `  `        ``// Sorting the range ` `        ``Array.Sort(arr); ` `  `  `        ``// Finding the maximum starting  ` `        ``// value of common segment ` `        ``first = Math.Max(first, arr); ` `  `  `        ``// Finding the minimum ending  ` `        ``// value of common segment ` `        ``end = Math.Min(end, arr); ` `        ``cnt++; ` `        ``n--; ` `    ``} ` `  `  `    ``// If there is no common segment ` `    ``if` `(first > end) ` `        ``Console.Write(``"-1"``); ` `  `  `    ``else` `{ ` `          `  `        ``// If the given number is between ` `        ``// the computed common range. ` `        ``if` `(d >= first && d <= end) { ` `            ``Console.Write(``"0"``); ` `        ``} ` `  `  `        ``// Finding the minimum distance ` `        ``else` `            ``Console.Write(Math.Min(Math.Abs(first - d), ` `                        ``Math.Abs(d - end))); ` `    ``} ` `} ` `  `  `// Driver Code ` `public` `static` `void` `Main(String []args) ` `{ ` `    ``int` `n = 3, d = 3; ` `  `  `    ``// Given array of ranges ` `    ``int` `[,]arrays = { ` `        ``{ 0, 7 }, ` `        ``{ 2, 14 }, ` `        ``{ 4, 6 } ` `    ``}; ` `    ``findMinimumOperation(n, d, arrays); ` `} ` `} ` `  `  `// This code is contributed by PrinciRaj1992 `

Output:

```1
``` My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.