মান लीজिए, আমাদের দুটি অ্যারে রয়েছে যাতে ইন্টিজার মান রয়েছে। একটি লিস্টে কিছু ইউনিট প্রস্থের বক্সের উচ্চতা রয়েছে এবং অন্য অ্যারেতে গোডাউনের ঘরগুলোর উচ্চতা রয়েছে। ঘরগুলো 0...n নম্বর দিয়ে নম্বর করা আছে, এবং ঘরগুলোর উচ্চতা গোডাউন অ্যারেতে তাদের রেসপেক্টিভ ইনডেক্সে দেওয়া আছে। আমাদের বের করতে হবে কতগুলো বক্স গোডাউনের ভিতর ঠেলে দেওয়া যায়। কিছু বিষয় মনে রাখতে হবে:
বক্সগুলো একে অপরের ওপর রাখা যাবে না।
বক্সগুলোর অর্ডার পরিবর্তন করা যাবে।
বক্সগুলো গোডাউনের যেকোনো পাশ থেকে (বাম বা ডান) ঢুকানো যাবে। যদি কোনো বক্স ঘরের উচ্চতαιο চেয়ে বেশি উঁচু হয়, তবে সেই বক্স এবং তার ডান পাশের সকল বক্স গোডাউনের ভিতর ঠেলে দেওয়া যাবে না।
তবে, যদি ইনপুট হয় boxes = [4, 5, 6], godown = [4, 5, 6, 7], তবে আউটপুট হবে 3। ইনপুট olarak দেওয়া তিনটি বক্সই গোডাউনে রাখা যাবে।

সমাধানের ধাপসমূহ
বক্সের লিস্টটি ডিসেন্ডিং অর্ডারে সর্ট করুন
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