Files
leetcode/2398-max-num-robots-on-budget.go
2023-12-10 19:52:38 +02:00

46 lines
766 B
Go

package main
func MaximumRobots(chargeTimes []int, runningCosts []int, budget int64) int {
l := len(chargeTimes)
if l != len(runningCosts) {
return 0
}
prevCharges := make([]int, l)
prevCosts := make([]int, l)
maxWndRobots := make([]int, l+1)
maxRobots := 0
for wnd := 1; wnd <= l; wnd++ {
windows := l - wnd + 1
begin := 0
end := wnd - 1
for w := 0; w < windows; w++ {
m := chargeTimes[end]
if m > prevCharges[w] {
prevCharges[w] = m
}
prevCosts[w] += runningCosts[end]
totalCost := int64(wnd*prevCosts[w] + prevCharges[w])
if totalCost <= budget {
maxRobots = wnd
}
begin++
end++
}
maxWndRobots[wnd] = maxRobots
if maxWndRobots[wnd] == maxWndRobots[wnd-1] {
break
}
}
return maxRobots
}