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

C++-তে সর্বোচ্চ M পণ্য বিক্রি করে সর্বোচ্চ লাভ বের করা


টাস্ক হলো সর্বোচ্চ 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
  1. C++-এ The Maze III সমস্যা সমাধান

  2. C++-এ স্টক কিনে ও বিক্রি করে সর্বোচ্চ লাভ (Maximum profit after buying and selling the stocks)

  3. C++-এ মেট্রিক্স রিশেপ (Reshape the Matrix)

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