go: add «826. Most Profit Assigning Work»
Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
parent
e74d5bfa99
commit
8faeaa7e16
1 changed files with 28 additions and 0 deletions
28
go/most-profit-assigning-work.go
Normal file
28
go/most-profit-assigning-work.go
Normal file
|
@ -0,0 +1,28 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"slices"
|
||||
)
|
||||
|
||||
func maxProfitAssignment(difficulty []int, profit []int, worker []int) int {
|
||||
maxAbility := slices.Max(worker)
|
||||
jobs := make([]int, maxAbility+1)
|
||||
|
||||
for i, d := range difficulty {
|
||||
if d > maxAbility {
|
||||
continue
|
||||
}
|
||||
jobs[d] = max(jobs[d], profit[i])
|
||||
}
|
||||
|
||||
for i := 1; i <= maxAbility; i++ {
|
||||
jobs[i] = max(jobs[i], jobs[i-1])
|
||||
}
|
||||
|
||||
total := 0
|
||||
for _, ability := range worker {
|
||||
total += jobs[ability]
|
||||
}
|
||||
|
||||
return total
|
||||
}
|
Loading…
Reference in a new issue