ধরুন আমাদের একটি তালিকা গ্রাহক এবং আরেকটি তালিকার মুড আছে, এই দুটি একই দৈর্ঘ্যের, আমাদের আরেকটি পূর্ণসংখ্যা k আছে। এখন প্রতি মিনিটে i, গ্রাহক[i] সংখ্যক লোক দোকানে আসে এবং যখন মেজাজ[i] =1 হয়, এটি নির্দেশ করে যে গ্রাহকরা খুশি এবং যখন মেজাজ [i] =0, তখন তারা দুঃখিত। আমরা 1s-এ মেজাজের k আকারের একটি সাবলিস্ট সেট করতে পারি, অবশেষে আমাদেরকে খুশি করতে পারি এমন সর্বাধিক সংখ্যক লোককে খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি গ্রাহকদের মত হয় =[2, 3, 6, 6, 3] মুড =[1, 1, 0, 0, 0] k =2, তাহলে আউটপুট হবে 17 কারণ যদি আমরা মুড সেট করি[2] ] এবং মুড[3] থেকে 1, তাহলে মোট মুড হবে 2 + 3 + 6 + 6 =17 গ্রাহক খুশি৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- n :=মেজাজের আকার
- a :=আকারের একটি তালিকা (n + 1) এবং 0 দিয়ে পূরণ করুন
- s :=0
- আমি 0 থেকে n - 1 রেঞ্জের জন্য, কর
- a[i + 1] :=a[i]
- যদি মেজাজ[i] অ-শূন্য হয়, তাহলে
- s :=s + গ্রাহক[i]
- অন্যথায়,
- a[i + 1] :=a[i + 1] + গ্রাহক[i]
- d :=0
- আমি k থেকে n রেঞ্জের জন্য, কর
- d :=সর্বাধিক d এবং (a[i] - a[i - k])
- s + d ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(customers, mood, k): n = len(mood) a = [0] * (n + 1) s = 0 for i in range(n): a[i + 1] = a[i] if mood[i]: s += customers[i] else: a[i + 1] += customers[i] d = 0 for i in range(k, n + 1): d = max(d, a[i] - a[i - k]) return s + d customers = [2, 3, 6, 6, 3] mood = [1, 1, 0, 0, 0] k = 2 print(solve(customers, mood, k))
ইনপুট
[2, 3, 6, 6, 3], [1, 1, 0, 0, 0], 2
আউটপুট
17