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

C++ প্রোগ্রাম: সর্বোচ্চ k টাকা খরচে কতটুকু চকলেট কিনা যায়

মান লিখুন: আমাদের কাছে n উপাদান বিশিষ্ট একটি অ্যারে A এবং l, r, k মানগুলো আছে। আমল চকলেট কিনবে কিন্তু খুব মंহগা বা খুব সস্তা চকলেট কিনবে না। দোকানে nটি চকলেট বার আছে যাদের দাম A-তে দেওয়া আছে। দাম r-র চেয়ে বড় হলে খুব মंহগা, l-র চেয়ে ছোট হলে খুব সস্তা। সে সর্বোচ্চ k টাকা খরচ করতে চায়। সে সর্বোচ্চ কতটি চকলেট কিনতে পারবে তা বের করতে হবে।

উদাহরণ

যদি ইনপুট হয় A = [1, 2, 3, 4, 5, 6]; l = 3; r = 5; k = 10, তবে আউটপুট হবে 2, কারণ সে ৩ ও ৪ টাকার চকলেট কিনে মোট ৭ টাকা খরচ করবে।

সমাধানের ধাপসমূহ

n := A এর আকার
ans := 0
A সর্ট করুন
for i := 0 থেকে n-1:
    যদি A[i] > k: লুপ থেকে বের হোন
    যদি A[i] >= l এবং A[i] <= r:
        k := k - A[i]
        ans বাড়ান
ans রিটার্ন করুন

C++ বাস্তবায়ন

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

int solve(vector<int> A, int l, int r, int k) {
    int n = A.size();
    int ans = 0;
    sort(A.begin(), A.end());
    for (int i = 0; i < n; ++i) {
        if (A[i] > k) break;
        if (A[i] >= l && A[i] <= r) {
            k -= A[i];
            ++ans;
        }
    }
    return ans;
}

int main() {
    vector<int> A = { 1, 2, 3, 4, 5, 6 };
    int l = 3, r = 5, k = 10;
    cout << solve(A, l, r, k) << endl;
}

ইনপুট

{ 1, 2, 3, 4, 5, 6 }, 3, 5, 10

আউটপুট

2
  1. C++ প্রোগ্রাম: গ্রাফ থেকে এজ মুছে স্কোর সর্বনিম্ন করায় সর্বোচ্চ কমতি

  2. সি++ প্রোগ্রাম: সর্বোচ্চ এজ-ডিসজয়েন্ট পাথ (Maximum Number of Edge Disjoint Paths) বের করা

  3. পাইথনে সর্বোচ্চ কতটি পানির বোতল পান করা যায় সেটি বের করার প্রোগ্রাম

  4. পাইথনে সিঁড়ির ধাপ চড়ার উপায় গণনা করার প্রোগ্রাম (সর্বোচ্চ k বার 3 ধাপ)