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

C++-এ অ্যারে থেকে সর্বোচ্চ ওজন পার্থক্য (Maximum Weight Difference)

একটি অ্যারে arr[] ও সংখ্যা M দেওয়া আছে। অ্যারেটি থেকে M সংখ্যক উপাদান বাছাই করতে হবে যাতে বাছাইকৃত উপাদানগুলোর যোগফল ও বাকি উপাদানগুলোর যোগফলের পরম পার্থক্য সর্বোচ্চ হয়।

উদাহরণ

arr[] = {3, 1, 6, 9, 4}, M = 3

আউটপুট: 15

ব্যাখ্যা: {4,6,9} বাছাই করলে যোগফল ১৯। বাকি {3,1} যোগফল ৪। পার্থক্য |19-4| = 15।

অ্যালগরিদম

  • সর্বোচ্চ পার্থক্য হয়ে থাকে M টি সর্বোচ্চ বা M টি সর্বনিম্ন উপাদান বাছাই করলে।
  • অ্যারেটি সর্ট করুন।
  • M টি ছোট ও M টি বড় উপাদানের যোগফল বের করুন।
  • উভয় কেসের পার্থক্য থেকে সর্বোচ্চটা নিন।

C++ প্রোগ্রাম

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

int maxWeightDifference(int arr[], int N, int M) {
    sort(arr, arr + N);
    int sumMin = 0, sumMax = 0, arrSum = 0;
    for (int i = 0; i < N; i++) {
        arrSum += arr[i];
        if (i < M) sumMin += arr[i];
        if (i >= N-M) sumMax += arr[i];
    }
    int diff1 = abs(sumMax - (arrSum - sumMax));
    int diff2 = abs(sumMin - (arrSum - sumMin));
    return max(diff1, diff2);
}

int main() {
    int arr[] = {3, 1, 6, 9, 4};
    int M = 3, N = sizeof(arr)/sizeof(arr[0]);
    cout << "The maximum weight difference is " << maxWeightDifference(arr, N, M);
    return 0;
}

আউটপুট: The maximum weight difference is 15

  1. C++-এ জব শিডিউলিং থেকে সর্বোচ্চ প্রফিট (Maximum Profit in Job Scheduling)

  2. C++-এ স্ট্রিং-এর সর্বোচ্চ ওজনραν্তরূপান্তর (Maximum Weight Transformation of a String)

  3. C++-এ অ্যারেতে সর্বোচ্চ ট্রিপলেট যোগফল (Maximum Triplet Sum in Array)

  4. C++-এ ম্যাক্সিমাম সাবঅ্যারে সাম মডুলো m