মনে করুন arr নামে একটি অ্যারে আছে। আমাদের arr-এ কিছু অপারেশন করতে হবে যাতে এটি নিচের শর্তগুলো পূরণ করে −
arr-এ প্রথম এলিমেন্ট অবশ্যই 1 হতে হবে।
যে কোনো দুটি সন্নিহিত এলিমেন্টের আবসোলিউট ডিফারেন্স hoogোত 1 হতে হবে।
এবং দুটি অপারেশন আছে। আমরা এই দুটি টাইপের অপারেশন যেকোনো সংখ্যকবার করতে পারি −
arr-এর যেকোনো মান কে ছোট একটি পজিটিভ নাম্বারে কমাতে পারি।
arr-এর এলিমেন্টগুলো যেকোনো অর্ডারে পুনর্বিন্যাস করতে পারি।
শর্তগুলো পূরণ করার জন্য অপারেশন করার পর arr-এ সর্বোচ্চ সম্ভাব্য মান বের করতে হবে।
সুতরাং, যদি ইনপুট হয় arr = [3,3,2,3,2], তবে আউটপুট হবে 3 কারণ, আমরা লাস্ট এলিমেন্টকে 1 করে কমাতে পারি, তারপর এদের এভাবে সাজাতে পারি [1,2,3,3,3], এবং সর্বোচ্চ 3।
এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব −
arr তালিকাটি সর্ট করুন
arr[0] := 1
i = 1 থেকে arr-এর আকার - 1 পর্যন্ত জন্য, করুন
arr[i] := (arr[i - 1] + 1) এবং arr[i] এর মধ্যে ন্যূনতম
arr-এর সর্বোচ্চ রিটার্ন করুন
উদাহরণ
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন −
def solve(arr):
arr.sort()
arr[0] = 1
for i in range(1, len(arr)):
arr[i] = min(arr[i - 1] + 1, arr[i])
return max(arr)
arr = [3,3,2,3,2]
print(solve(arr))
ইনপুট
[3,3,2,3,2]
আউটপুট
3