मान लीजिए हमारे पास n तत्वों वाला एक ऐरे A है, और अन्य मान l, r और k हैं। अमल चॉकलेट खरीदना चाहता है और वह बहुत महंगी चॉकलेट नहीं खरीदेगा, और बहुत सस्ती भी नहीं। दुकान में n अलग-अलग चॉकलेट बार हैं और कीमतें A में दर्शाई गई हैं। एक चॉकलेट बार बहुत महंगी है यदि उसकी कीमत r से अधिक है और बहुत सस्ती यदि उसकी कीमत l से कम है। वह अधिकतम k रुपये खर्च करना चाहता है। हमें अधिकतम चॉकलेट की संख्या ढूंढनी है जो वह खरीद सकता है।
उदाहरण के लिए, यदि इनपुट A = [1, 2, 3, 4, 5, 6]; l = 3; r = 5; k = 10 है, तो आउटपुट 2 होगा, क्योंकि वह 3 और 4 रुपये की चॉकलेट 7 रुपये में खरीद सकता है।
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
n := A का आकार ans := 0 ऐरे A को सॉर्ट करें i := 0 से n-1 तक, करें: यदि A[i] > k, तो: लूप से बाहर निकलें यदि A[i] >= l और A[i] <= r, तो: k := k - A[i] ans बढ़ाएं ans वापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#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; int r = 5; int k = 10; cout << solve(A, l, r, k) << endl; } इनपुट
{ 1, 2, 3, 4, 5, 6 }, 3, 5, 10 आउटपुट
2