2025-12-18 21:06:02 +0300 MSK
Best Time to Buy and Sell Stock using Strategy
Links
Code
class Solution:
def maxProfit(self, prices: List[int], strategy: List[int], k: int) -> int:
native_profit = 0
native_segment = 0
changed_segment = 0
max_changed_segment = 0
for i in range(len(prices)):
price = prices[i]
native_profit += price * strategy[i]
native_segment += price * strategy[i]
if i + 1 <= k // 2:
pass
elif i + 1 < k :
changed_segment += price
elif i + 1 == k:
changed_segment += price
max_changed_segment = max(max_changed_segment, changed_segment - native_segment)
else:
changed_segment += price - prices[i - (k // 2)]
native_segment -= prices[i - k] * strategy[i - k]
max_changed_segment = max(max_changed_segment, changed_segment - native_segment)
return max(native_profit, native_profit + max_changed_segment)