diff --git a/go/grumpy-bookstore-owner.go b/go/grumpy-bookstore-owner.go new file mode 100644 index 0000000..b4044f9 --- /dev/null +++ b/go/grumpy-bookstore-owner.go @@ -0,0 +1,29 @@ +package main + +func maxSatisfied(customers []int, grumpy []int, minutes int) int { + // count always satisfied customers + satisfied := 0 + for i, count := range customers { + satisfied += count * (1 - grumpy[i]) + } + + // get the initial run + unsatisfied := 0 + for i := 0; i < minutes; i++ { + unsatisfied += customers[i] * grumpy[i] + } + + maxCoverage := unsatisfied + for i := minutes; i < len(customers); i++ { + // remove from the start + unsatisfied -= customers[i-minutes] * grumpy[i-minutes] + + // add from the end + unsatisfied += customers[i] * grumpy[i] + + // update max coverage + maxCoverage = max(maxCoverage, unsatisfied) + } + + return maxCoverage + satisfied +}