35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
def maxSatisfied(customers, grumpy, minutes):
|
|
"""
|
|
:type customers: List[int]
|
|
:type grumpy: List[int]
|
|
:type minutes: int
|
|
:rtype: int
|
|
"""
|
|
# Sliding Window Approach
|
|
i = 0
|
|
j = 0
|
|
sum_unsatisfied = 0
|
|
max_sum = float('-inf')
|
|
|
|
# Using sliding window
|
|
while j < len(grumpy):
|
|
if grumpy[j] == 1: # Calculation part
|
|
sum_unsatisfied += customers[j]
|
|
|
|
if j - i + 1 < minutes:
|
|
j += 1
|
|
elif j - i + 1 == minutes:
|
|
max_sum = max(max_sum, sum_unsatisfied)
|
|
if grumpy[i] == 1: # Removing calculation part using i
|
|
sum_unsatisfied -= customers[i]
|
|
i += 1 # Sliding the window
|
|
j += 1
|
|
|
|
for k in range(len(customers)): # Now finding only satisfied customers (grumpy[k] == 0)
|
|
if grumpy[k] == 0:
|
|
max_sum += customers[k]
|
|
|
|
return max_sum
|
|
|
|
|
|
maxSatisfied([1,0,1,2,1,1,7,5], [0,1,0,1,0,1,0,1], 3) |