```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)
}
```