- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Maximize the median of the given array after adding K elements to the same array in C++
Problem statement
Given an array arr[] of N elements and an integer K where K < N. The task is to insert K integer elements to the same array such that the median of the resultant array is maximized
If input array is {1, 3, 2, 5} and k = 3 then −
- Sorted array becomes {1, 2, 3, 5}
- Insert 3 elements that are greater than 5. After this operation array becomes {1, 2, 3, 5, 6, 6, 6}
- Median of the new array is 5
Algorithm
1. In order to maximize the median of the resultant array, all the elements that need to be inserted must be greater than the maximum element from the array 2. Sort the array and the median of the array will be arr[size / 2] if the size is odd else (arr[(size / 2) – 1] + arr[size / 2]) / 2
Example
#include <bits/stdc++.h> using namespace std; double getMaxMedian(int *arr, int n, int k){ int newSize = n + k; double median; sort(arr, arr + n); if (newSize % 2 == 0) { median = (arr[(newSize / 2) - 1] + arr[newSize / 2]) / 2; return median; } median = arr[newSize / 2]; return median; } int main(){ int arr[] = {1, 3, 2, 5}; int n = sizeof(arr) / sizeof(arr[0]); int k = 3; cout << "Max median = " << getMaxMedian(arr, n, k) << endl; return 0; }
Output
When you compile and execute the above program. It generates following output:
Max median = 5
Advertisements