मान लीजिए हमारे पास एक सूची customers और दूसरी सूची mood है, ये दोनों समान लंबाई के हैं, हमारे पास एक और पूर्णांक k भी है। अब प्रत्येक मिनट i पर, customers[i] संख्या में लोग स्टोर पर आते हैं और जब mood[i] = 1, तो यह दर्शाता है कि ग्राहक खुश हैं और जब mood[i] = 0, तो वे दुखी हैं। हम mood के आकार k के एक सबलिस्ट को 1 पर सेट कर सकते हैं, अंत में हमें उन लोगों की अधिकतम संख्या ढूंढनी है जिन्हें हम खुश कर सकते हैं।
इसलिए, यदि इनपुट है customers = [2, 3, 6, 6, 3], mood = [1, 1, 0, 0, 0], k = 2, तो आउटपुट होगा 17 क्योंकि यदि हम mood[2] और mood[3] को 1 पर सेट करते हैं, तो कुल मूड 2 + 3 + 6 + 6 = 17 ग्राहक खुश होंगे।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
n := moodका आकारa :=आकार(n + 1)की एक सूची और 0 से भरेंs := 0iके लिए 0 सेn - 1तक की रेंज में, करें:a[i + 1] := a[i]- यदि
mood[i]शून्येतर है, तो:s := s + customers[i]
- अन्यथा:
a[i + 1] := a[i + 1] + customers[i]
d := 0iके लिएkसेnतक की रेंज में, करें:d := max(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