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

C++-এ K উপাদান যোগ করে অ্যারে-এর মেডিয়ান সর্বাধিক করা

সমস্যা বিবরণ

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. C++-এ K বার 네가শন দিয়ে অ্যারে যোগফল সর্বাধিক করা

  3. C++-এ দেওয়া সংখ্যা পর্যন্ত অ্যারে উপাদান সর্বাধিক করা

  4. C++-এ অ্যারে উপাদানগুলির ফ্যাক্টোরিয়ালের GCD বের করা