← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	var m, k int
	if _, err := fmt.Fscan(in, &m, &k); err != nil {
		return
	}
	d := make([]int64, m)
	s := make([]int64, m)
	for i := 0; i < m; i++ {
		fmt.Fscan(in, &d[i])
	}
	for i := 0; i < m; i++ {
		fmt.Fscan(in, &s[i])
	}
	var sumD, sumS, extra, totalQ, smax int64
	for i := 0; i < m; i++ {
		sumD += d[i]
		sumS += s[i]
		if s[i] > smax {
			smax = s[i]
		}
		avail := sumS + extra
		if avail < sumD {
			def := sumD - avail
			qAdd := (def + smax - 1) / smax
			totalQ += qAdd
			extra += qAdd * smax
		}
	}
	ans := sumD + int64(k)*totalQ
	fmt.Println(ans)
}
```