দেওয়া আছে একই সাইজ N-এর দুটি অ্যারে। টাস্ক হলো ১ম অ্যারে থেকে X সংখ্যক এবং ২য় অ্যারে থেকে Y সংখ্যক এলিমেন্ট বেছে নিয়ে সর্বোচ্চ যোগফল বের করা।
ইনপুট
arr1 = {1,2,3,4,5}; X=2
arr2 = {1,3,5,2,7}; Y=3
আউটপুট
Maximum sum here is: 24
ব্যাখ্যা − arr1 থেকে সর্বোচ্চ ২টি: ৪, ৫। arr2 থেকে সর্বোচ্চ ৩টি: ৩, ৫, ৭। মোট যোগফল ২৪।
ইনপুট
arr1 = {10,13,16,14}; X=1
arr2 = {4,1,2,1}; Y=2
আউটপুট
Maximum sum here is: 22
ব্যাখ্যা − arr1 থেকে সর্বোচ্চ ১টি: ১৬। arr2 থেকে সর্বোচ্চ ২টি: ৪, ২। যোগফল ২২।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- দুটি অ্যারে
arr1[],arr2[]এবং X, Y ইনপুট নিন। - দুটি অ্যারে অ্যাসেন্ডিং অর্ডারে সর্ট করুন।
- প্রথম অ্যারে থেকে শেষ Xটি এবং দ্বিতীয় অ্যারে থেকে শেষ Yটি এলিমেন্ট নিন (কারণ সর্টেড হলে সবচেয়ে বড় মানগুলো শেষে থাকে)।
- নির্বাচিত এলিমেন্টগুলোর যোগফল রিটার্ন করুন।
উদাহরণ
#include <iostream>
#include <algorithm>
using namespace std;
int max_sum(int arr1[], int arr2[], int length, int X, int Y) {
sort(arr1, arr1 + length);
sort(arr2, arr2 + length);
int sum = 0;
for (int i = 0; i < X; i++)
sum += arr1[length - i - 1];
for (int i = 0; i < Y; i++)
sum += arr2[length - i - 1];
return sum;
}
int main() {
int arr1[] = {1, 1, 1, 3, 7};
int arr2[] = {1, 1, 2, 3, 5};
int x = 3, y = 2;
cout << "Maximized sum of X+Y elements by picking X and Y elements from 1st and 2nd array is " << max_sum(arr1, arr2, 5, x, y);
return 0;
}
আউটপুট
Maximized sum of X+Y elements by picking X and Y elements from 1st and 2nd array is 19