मान लीजिए कि हमारे पास 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