मान लीजिए कि एक जूते की दुकान में अलग-अलग आकार के n अलग-अलग आकार के जूते हैं, जिन्हें आकार कहा जाता है और m ग्राहकों के लिए जोड़े की एक और सूची दी गई है, जिसे मांग कहा जाता है, जहां मांग [i] में (जूता_आकार, पैसा) होता है, इसलिए मांग वाला ग्राहक मेरे पास है जूते की एक मांग जिसका आकार Shoe_size है और वह दी गई राशि का भुगतान कर सकता/सकती है। हमें यह पता लगाना है कि इन जूतों को बेचकर दुकानदार कितना पैसा कमा सकता है।
तो, अगर इनपुट जूते की तरह है =[2,3,4,5,6,8,7,6,5,18] मांग =[(6,55), (6,45), (6,55) , (4,40), (18,60), (10,50)], तो आउटपुट 200 होगा क्योंकि
-
पहले वाला 6 आकार का जूता 55 की कीमत पर खरीदेगा
-
दूसरा 45 की कीमत पर 6 आकार का जूता खरीदेगा
-
स्टॉक में आकार 6 वाला कोई जूता नहीं है
-
चौथा व्यक्ति 40 की कीमत पर आकार 4 वाला जूता खरीदेगा
-
पांचवां वाला 18 आकार का जूता 60 की कीमत पर खरीदेगा
-
छठे वाले को जूता नहीं मिलेगा क्योंकि आकार 10 का कोई जूता नहीं है
कुल कमाई 55 + 45 + 40 + 60 =200.
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=मांग का आकार
- आकार :=आकार के आधार पर जूतों की आवृत्ति वाला नक्शा
- कमाना:=0
- मैं के लिए 0 से n -1 की सीमा में, करो
- (sz, कीमत):=मांग[i]
- यदि आकार sz वाला जूता आकार में मौजूद है, तो
- आकार[sz] :=size[sz] - 1
- कमाना :=कमाना + कीमत
- वापसी कमाई
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
from collections import Counter def solve(shoes, demand): n = len(demand) sizes = Counter(shoes) earn = 0 for i in range(n): sz, price = demand[i] if sizes[sz]: sizes[sz] -= 1 earn += price return earn shoes = [2,3,4,5,6,8,7,6,5,18] demand = [(6,55), (6,45), (6,55), (4,40), (18,60), (10,50)] print(solve(shoes, demand))
इनपुट
[2,3,4,5,6,8,7,6,5,18], [(6,55), (6,45), (6,55), (4,40), (18,60), (10,50)]
आउटपुट
200