কম্পিউটার টিউটোরিয়াল

C++-এ অ্যারে-এর মেডিয়ান সর্বাধিক করা

সমস্যা বিবরণ

N উপাদানের একটি অ্যারে arr[] এবং একটি ইন্টিজার K দেওয়া আছে যেখানে K < N। কাজ হল একই অ্যারেতে Kটি ইন্টিজার উপাদান যোগ করা যাতে ফলাফলস্বরূপ অ্যারের মেডিয়ান সর্বাধিক হয়।

যদি ইনপুট অ্যারে হয় {1, 3, 2, 5} এবং k = 3 তবে:

  • সর্টেড অ্যারে হয় {1, 2, 3, 5}
  • ৫ থেকে বড় ৩টি উপাদান যোগ করুন। এই অপারেশনের পর অ্যারে হয় {1, 2, 3, 5, 6, 6, 6}
  • নতুন অ্যারের মেডিয়ান হল ৫

অ্যালগরিদম

1. ফলাফলস্বরূপ অ্যারের মেডিয়ান সর্বাধিক করার জন্য, যোগ করা যাবতীয় সব উপাদান অবশ্যই অ্যারের সর্বোচ্চ উপাদানের চেয়ে বড় হতে হবে। 
2. অ্যারেটি সর্ট করুন এবং অ্যারের মেডিয়ান হবে arr[size/2] যদি সাইজ বিজোড় হয়, অন্যথায় (arr[(size/2)-1] + arr[size/2]) / 2।

উদাহরণ

#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; 
}

আউটপুট

Max median = 5
  1. অ্যারেতে প্রিফিক্সের ম্যাক্সিমাম অকারেন্স বের করা C++-এ

  2. অ্যারে রি-অ্যারেঞ্জ করে i*arr[i] ম্যাক্সিমাইজ করা C++-এ

  3. C++-এ অ্যারের প্রিফিক্সকে -1 দিয়ে গুণ করে অ্যারের যোগফল সর্বাধিক করা

  4. C++-এ মেজ সমস্যা: বল দিয়ে পথ খুঁজে বের করা