मान लीजिए, हमारे पास दो सरणियाँ हैं जिनमें पूर्णांक हैं। एक सूची में कुछ यूनिट चौड़ाई वाले बॉक्स की ऊंचाई है और दूसरी सरणी में गोदाम में कमरों की ऊंचाई है। कमरे 0...n से नंबर किए गए हैं, और कमरों की ऊंचाई सरणी godown में उनके संबंधित इंडेक्स पर दी गई है। हमें उन बॉक्स की संख्या पता करनी है जिन्हें गोदाम में धकेला जा सकता है। कुछ बातों का ध्यान रखना होगा:
- बॉक्स को एक के ऊपर एक नहीं रखा जा सकता।
- बॉक्स का क्रम बदला जा सकता है।
बॉक्स को गोदाम में किसी भी तरफ से डाला जा सकता है, यह बाएं या दाएं से हो सकता है। यदि कोई बॉक्स कमरे की ऊंचाई से लंबा है, तो वह बॉक्स और उसके दाएं के सभी बॉक्स गोदाम में नहीं धकेले जा सकते।
इसलिए, यदि इनपुट है: boxes = [4, 5, 6], godown = [4, 5, 6, 7], तो आउटपुट 3 होगा। दिए गए सभी तीन बॉक्स गोदाम में रखे जा सकते हैं।

हल करने के चरण
- boxes सूची को अवरोही क्रम में सॉर्ट करें
- l := 0
- r := godown का आकार - 1
- bi := 0
- ret := 0
- जब bi < boxes का आकार और l <= r, तब:
- यदि godown[l] > godown[r], तो:
- यदि boxes[bi] <= godown[l], तो: ret := ret + 1, l := l + 1
- अन्यथा, यदि boxes[bi] <= godown[r], तो: ret := ret + 1, r := r - 1
- bi := bi + 1
- यदि godown[l] > godown[r], तो:
- ret वापस करें
उदाहरण (Python)
def solve(boxes, godown):
boxes.sort(reverse=True)
l, r = 0, len(godown) - 1
bi, ret = 0, 0
while bi < len(boxes) and l <= r:
if godown[l] > godown[r]:
if boxes[bi] <= godown[l]:
ret += 1
l += 1
else:
if boxes[bi] <= godown[r]:
ret += 1
r -= 1
bi += 1
return ret
print(solve([4, 5, 6], [4, 5, 6, 7]))
इनपुट
[4, 5, 6], [4, 5, 6, 7]
आउटपुट
3