मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है, और अन्य मान l, r और k हैं। अमल चॉकलेट खरीदना चाहता है और वह बहुत महंगी चॉकलेट नहीं खरीदेगा, और न ही बहुत सस्ती चॉकलेट। स्टोर में, अलग-अलग चॉकलेट बार हैं और कीमतों को A में दर्शाया गया है। एक चॉकलेट बार बहुत महंगा है यदि इसकी कीमत r से बड़ी है और बहुत सस्ती है यदि इसकी कीमत l से कम है। वह अधिकतम k रुपये खर्च करना चाहता है। हमें यह पता लगाना है कि वह कितनी चॉकलेट खरीद सकता है।
तो, अगर इनपुट ए =[1, 2, 3, 4, 5, 6] जैसा है; एल =3; आर =5; k =10, तो आउटपुट 2 होगा, क्योंकि वह 3 रुपये और 4 रुपये की चॉकलेट 7 रुपये से खरीद सकता है।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
n := size of A ans := 0 sort the array A for initialize i := 0, when i < n, update (increase i by 1), do: if A[i] > k, then: Come out from the loop if A[i] >= l and A[i] <= r, then: k := k - A[i] (increase ans by 1) return 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