এই সমস্যায়, আমাদেরকে একটি অ্যারে arr[] এবং একটি সংখ্যা M দেওয়া হয়। আমাদের কাজ হল C++ এ সর্বাধিক ওজনের পার্থক্য গণনা করার জন্য একটি প্রোগ্রাম তৈরি করা।
সমস্যা বিবৃতি
আমরা অ্যারে থেকে M উপাদানগুলি খুঁজে পাব যাতে যোগফল এবং বাকি উপাদানগুলির যোগফলের মধ্যে পরম পার্থক্য সর্বাধিক।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট :arr[] ={3, 1, 6, 9, 4} M =3
আউটপুট :15
ব্যাখ্যা
আমরা 4,6,9 বিবেচনা করব। যোগফল হল 19। বাকি সংখ্যার যোগফলের সাথে পরম পার্থক্য হল
|19 - 4| =15
সমাধান পদ্ধতি
সমস্যার সমাধান এই সত্যের উপর ভিত্তি করে যে সর্বাধিক পার্থক্য শুধুমাত্র M বৃহত্তম সংখ্যা বা M ক্ষুদ্রতম সংখ্যার ক্ষেত্রে সম্ভব। এবং আমাদের উভয় শর্ত পরীক্ষা করতে হবে এবং চূড়ান্ত ফলাফল খুঁজে পেতে পরম পার্থক্য তুলনা করতে হবে। M বৃহত্তম/ছোট সংখ্যা খুঁজে বের করার প্রক্রিয়া সহজ করার জন্য, আমরা অ্যারে সাজাব এবং তারপর K বৃহত্তম এবং ক্ষুদ্রতম সংখ্যার গণনা করব।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int maxWeightDifference(int arr[], int N, int M){
int maxabsDiff = -1000;
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];
}
maxabsDiff = max(abs(sumMax - (arrSum - sumMax)), abs(sumMin -(arrSum - sumMin)));
return maxabsDiff;
}
int main(){
int arr[] = {3, 1, 6, 9, 4} ;
int M = 3;
int N = sizeof(arr)/sizeof(arr[0]);
cout<<"The maximum weight difference is "<<maxWeightDifference(arr,N, M);
return 0;
} আউটপুট
The maximum weight difference is 15