| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | package mainimport (	"fmt"	"sort")type ints [][2]intfunc (is ints) Len() int           { return len(is) }func (is ints) Less(i, j int) bool { return is[i][0] < is[j][0] }func (is ints) Swap(i, j int)      { is[i], is[j] = is[j], is[i] }func main() {	var n, d int	fmt.Scan(&n, &d)	var is ints = make([][2]int, n)	for i := range is {		fmt.Scan(&is[i][0], &is[i][1])	}	sort.Sort(is)	dp := make([]int, n)	idx := 0	dp[0] = -1	for i := 1; i < n; i++ {		if is[i][0]-is[idx][0] < d {			dp[i] = dp[i-1]			continue		}		if pre := dp[i-1]; pre == -1 || is[pre][1] < is[idx][1] {			dp[i] = idx		} else {			dp[i] = dp[i-1]		}		idx++	}	max := 0	for i := range dp {		if dp[i] == -1 {			continue		}		max = maxInt(max, is[i][1]+is[dp[i]][1])	}	fmt.Println(max)}func maxInt(x, y int) int {	if x < y {		return y	}	return x}
 |