একটি অ্যারে A এবং একটি সংখ্যা K দেওয়া আছে। অপারেশন: A[0] থেকে A[N-1] পর্যন্ত প্রতিটি উপাদান থেকে K বিয়োগ করা। যদি A[i] < K হয়, তবে A[i] = 0 করুন। একবার ০ হলে সেটিতে আর অপারেশন করা হয় না। এই প্রক্রিয়া সব উপাদান ০ না হওয়া পর্যন্ত চালাতে হবে। সর্বশেষ কোন ইনডেক্স ০ হবে, সেটি বের করতে হবে।
উদাহরণ
ইনপুট: A = [4, 3, 6, 8, 3, 10], K = 4
অপারেশন ১: A = [0, 0, 2, 4, 0, 6]
অপারেশন ২: A = [0, 0, 0, 0, 0, 2]
অপারেশন ৩: A = [0, 0, 0, 0, 0, 0]
আউটপুট: ৫ (সর্বশেষ ইনডেক্স ৫ শূন্য হয়)
সমাধানের পদ্ধতি
- প্রতিটি উপাদান A[i]-র জন্য, এটি কতবার অপারেশন টিকতে পারবে তা হলো ceil(A[i] / K) = (A[i] + K - 1) // K
- এই মানগুলো অ্যারে-তে আপডেট করুন।
- সর্বোচ্চ মান ও তার ইনডেক্স খুঁজে বের করুন। যদি একাধিক থাকে, শেষ ইনডেক্স নিন।
পাইথন কোড
def search_index(A, k):
n = len(A)
idx = -1
x = -10**9
for i in range(n):
A[i] = (A[i] + k - 1) // k
for i in range(n):
if A[i] >= x:
x = A[i]
idx = i
return idx
arr = [4, 3, 6, 8, 3, 10]
K = 4
print(search_index(arr, K))
ইনপুট
[4, 3, 6, 8, 3, 10], 4
আউটপুট
5