প্রতিযোগিতার কারেন্ট স্কোর লিস্ট nums দেওয়া আছে। ফাইনাল রাউন্ডে ১ম স্থান পাবে n পয়েন্ট, ২য়ে n-1, ইত্যাদি। কতজন স্বিমার এখনও জয় করতে পারে (টাই হলে ও জয় মনে হবে)।
ইনপুট উদাহরণ
nums = [9, 6, 11, 12]
আউটপুট: 3 (স্কোর ৯, ১১, ১২ वाले জয় করতে পারে)
অ্যালগরিদম
- লিস্ট সর্ট করুন।
- উল্টা দিয়ে ট্রাভার্স করুন:
cand = nums[i] + n - i(সর্বোচ্চ সম্ভাব্য ফাইনাল স্কোর)। - ম্যাক্সিমাম
cand=a(জয়ের থ্রেশহোল্ড)। - যাদের
x + n >= aতারা জয় করতে পারে।
পাইথন কোড
def solve(nums):
if not nums:
return 0
n = len(nums)
ans = 0
nums.sort()
a = 0
for i in range(n-1, -1, -1):
cand = nums[i] + n - i
if cand > a:
a = cand
for x in nums:
if x + n >= a:
ans += 1
return ans
# টেস্ট
print(solve([9, 6, 11, 12])) # 3
ব্যাখ্যা
সর্টেড লিস্টে সর্বোচ্চ সম্ভাব্য স্কোর বের করে থ্রেশহোল্ড সেট করা হয়। এর ওপর বা সমান যারা পৌঁছাতে পারে তারা কান্ডিডেট।