package main import . "fmt" import . "os" import bf "bufio" func main() { rd := bf.NewReader(Stdin) var n, w int Fscan(rd,&n,&w) xs := make([]int, n) for i := range xs { Fscan(rd,&xs[i]) } ys := make([]int, n) for i := range ys { Fscan(rd,&ys[i]) } // 解説を読んだ // 解説のやりかた試す sum := make([]int, 2e5+1) for i, x := range xs { sum[x] += ys[i] } ans := 0 for g := w; g <= 2e5; g++ { tmp := 0 for e := g; e <= 2e5; e += g { tmp += sum[e] } ans = max(ans, tmp) } Println(ans) }