টাস্ক হলো সর্বোচ্চ M সংখ্যক পণ্য বিক্রি করে সর্বোচ্চ লাভ বের করা। মোট পণ্য Nটি, প্রতিটির কস্ট প্রাইস (CP) এবং সেলিং প্রাইস (SP) দেওয়া আছে।
ইনপুট
N=6, M=4
CP[] = {1, 9, 5, 8, 2, 11}
SP[] = {1, 15, 10, 16, 5, 20}
আউটপুট
28
ব্যাখ্যা − প্রতিটি পণ্য থেকে লাভ: ০, ৬, ৫, ৮, ৩, ৯। সর্বোচ্চ ৪টি পণ্য বেছে নিলে: ২য়, ৩য়, ৪র্থ ও ৬ষ্ঠ পণ্য। মোট লাভ = ৬+৫+৮+৯ = ২৮।
ইনপুট
N=3, M=2
CP[] = {10, 20, 30}
SP[] = {19, 22, 38}
আউটপুট
17
প্রোগ্রামে ব্যবহৃত পদ্ধতি
Profit[]অ্যারে তৈরি করুন প্রতিটি পণ্যের লাভ সংরক্ষণ করতে (SP - CP)।sort()দিয়েProfit[]-কে ডিসেন্ডিং অর্ডারে সর্ট করুন।- প্রথম Mটি পজিটিভ লাভ যোগ করুন। যদি লাভ নেগেটিভ বা শূন্য হয়, তবে ব্রেক করুন।
- মোট লাভ রিটার্ন করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int MaxProfit(int N, int M, int Cp[], int Sp[]) {
vector Profit(N);
for (int i = 0; i < N; i++)
Profit[i] = Sp[i] - Cp[i];
sort(Profit.begin(), Profit.end(), greater());
int total = 0;
for (int i = 0; i < M; i++) {
if (Profit[i] > 0) total += Profit[i];
else break;
}
return total;
}
int main() {
int N = 6, M = 4;
int CP[] = {1, 9, 5, 8, 2, 11};
int SP[] = {1, 15, 10, 16, 5, 20};
cout << "Maximum Profit: " << MaxProfit(N, M, CP, SP);
return 0;
}
আউটপুট
Maximum Profit: 28