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

C++-এ ঠিক k এলিমেন্ট ডিলিট করে অ্যারেতে মধ্যম মান সর্বোচ্চ করার প্রোগ্রাম


সমস্যা বিবরণ

একটি অ্যারে আকার N এবং ইন্টিজার K দেওয়া থাকলে, ঠিক Kটি এলিমেন্ট ডিলিট করুন যাতে ফলাফল অ্যারেতে মধ্যম এলিমেন্ট (middle element) সর্বোচ্চ হয়।

সমাধানের পদ্ধতি

  1. নতুন অ্যারের আকার = N - K।
  2. মধ্যম ইন্ডেক্স (১-বেসড) = (N - K + 1) / 2।
  3. মূল অ্যারেতে এই মধ্যম এলিমেন্টের সম্ভাব্য রেঞ্জ: low = (N + 1 - K) / 2 থেকে high = low + K।
  4. এই রেঞ্জের মধ্যে সর্বোচ্চ মানটি হবে উত্তর।

C++ কোড উদাহরণ

#include <bits/stdc++.h>
using namespace std;

int maximum_middle_value(int n, int k, int arr[]) {
    int ans = -1;
    int low = (n + 1 - k) / 2;
    int high = (n + 1 - k) / 2 + k;
    for (int i = low; i <= high; i++) {
        ans = max(ans, arr[i - 1]); // 1-based to 0-based
    }
    return ans;
}

int main() {
    int n = 5, k = 2;
    int arr[] = {9, 5, 3, 7, 10};
    cout << maximum_middle_value(n, k, arr) << endl;
    
    n = 9; k = 3;
    int arr1[] = {2, 4, 3, 9, 5, 8, 7, 6, 10};
    cout << maximum_middle_value(n, k, arr1) << endl;
    return 0;
}

আউটপুট

7
9

ব্যাখ্যা

কেস ১: n=5, k=2 → নতুন আকার 3, মধ্যম ইন্ডেক্স ২। সম্ভাব্য পজিশন: ২ থেকে ৪ (১-বেসড) → মান: 5,3,7 → সর্বোচ্চ 7।

কেস ২: n=9, k=3 → নতুন আকার 6, মধ্যম ইন্ডেক্স ৩। সম্ভাব্য পজিশন: ৩ থেকে ৬ → মান: 3,9,5,8 → সর্বোচ্চ 9।

জটিলতা

  • সময়: O(K)
  • স্থান: O(1)
  1. C++-এ অ্যারে থেকে উপাদান মুছে সর্বোচ্চ পয়েন্ট লাভ করা

  2. সি++-এ অ্যারেতে ন্যূনতম ও সর্বোচ্চ উপাদান বের করার প্রোগ্রাম

  3. সি++-এ ম্যাট্রিক্সে সর্বোচ্চ উপাদান বের করার প্রোগ্রাম

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