# Change in Median of given array after deleting given elements

Given two arrays arr1[] and arr2[]. The array arr1[] is sorted. The task is to print the change in median after removing each element from array arr2[] one by one.

Note: The array arr2[] has only those elements that are present in array arr1[].

Examples:

Input: arr1[] = {2, 4, 6, 8, 10}, arr2[] = {4, 6}
Output: 1 1
Explanation:
Initially median is 6.
After removing 4, array becomes arr1[] = {2, 6, 8, 10}, median = 7, therefore the difference is 7 – 6 = 1.
After removing 6, array becomes arr1[] = {2, 8, 10}, median = 8, therefore the difference is 8 – 7 = 1.

Input: arr1[] = {1, 100, 250, 251}, arr2[] = {250, 1}
Output: -75 75.5
Explanation:
Initially median is 175.
After removing 250, array becomes arr1[] = {1, 100, 251}, median = 100, therefore the difference is 100 – 175 = -75.
After removing 1, array becomes arr1[] = {100, 251}, median = 175.5, therefore the difference is 175.5 – 100 = 75.5.

Approach: The idea is to traverse each element of the array arr2[] and remove each element from the array arr1[] and store the median of the array arr1[] after each removal of element in an array(say temp[]). Print the consecutive difference of the elements of the array to get change in median after removing elements from arr2[].

Below is the implementation of the above approach:

 `// C++ program for the above approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to find the median change ` `// after removing elements from arr2[] ` `void` `medianChange(vector<``int``>& arr1, ` `                  ``vector<``int``>& arr2) ` `{ ` `    ``int` `N = arr1.size(); ` ` `  `    ``// To store the median ` `    ``vector<``float``> median; ` ` `  `    ``// Store the current median ` ` `  `    ``// If N is odd ` `    ``if` `(N & 1) { ` `        ``median ` `            ``.push_back(arr1[N / 2] * 1.0); ` `    ``} ` ` `  `    ``// If N is even ` `    ``else` `{ ` `        ``median ` `            ``.push_back((arr1[N / 2] ` `                        ``+ arr1[(N - 1) / 2]) ` `                       ``/ 2.0); ` `    ``} ` ` `  `    ``for` `(``auto``& x : arr2) { ` ` `  `        ``// Find the current element ` `        ``// in arr1 ` `        ``auto` `it = find(arr1.begin(), ` `                       ``arr1.end(), ` `                       ``x); ` ` `  `        ``// Erase the element ` `        ``arr1.erase(it); ` ` `  `        ``// Decrement N ` `        ``N--; ` ` `  `        ``// Find the new median ` `        ``// and append ` ` `  `        ``// If N is odd ` `        ``if` `(N & 1) { ` `            ``median ` `                ``.push_back(arr1[N / 2] * 1.0); ` `        ``} ` ` `  `        ``// If N is even ` `        ``else` `{ ` `            ``median ` `                ``.push_back((arr1[N / 2] ` `                            ``+ arr1[(N - 1) / 2]) ` `                           ``/ 2.0); ` `        ``} ` `    ``} ` ` `  `    ``// Print the corresponding ` `    ``// difference of median ` `    ``for` `(``int` `i = 0; ` `         ``i < median.size() - 1; ` `         ``i++) { ` `        ``cout << median[i + 1] - median[i] ` `             ``<< ``' '``; ` `    ``} ` `} ` ` `  `// Driven Code ` `int` `main() ` `{ ` `    ``// Given arrays ` `    ``vector<``int``> arr1 = { 2, 4, 6, 8, 10 }; ` `    ``vector<``int``> arr2 = { 4, 6 }; ` ` `  `    ``// Function Call ` `    ``medianChange(arr1, arr2); ` ` `  `    ``return` `0; ` `} `

Output:

```1 1
```

Time Complexity: O(M*N) 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.

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.