7.23小红书笔试第二题代码

package main

import (
	"fmt"
	"sort"
)

func main() {
	var n, m, k int
	fmt.Scan(&n, &m, &k)
	a := make([]int, n+1)
	aa := [][2]int{}
	for i := 0; i < m; i++ {
		var li, ri int
		fmt.Scan(&li, &ri)
		aa = append(aa, [2]int{li, ri})
	}
	sort.Slice(aa, func(j, k int) bool {
		return aa[j][0] < aa[k][0]
	})
	for _, v := range aa {
		a[v[0]]++
		a[v[1]]--
	}
	b := make([]int, n+1)
	for i := 1; i < len(a); i++ {
		b[i] = b[i-1] + a[i]
	}
	c := make([]int, n+1)
	for i := 1; i < len(b); i++ {
		c[i] = c[i-1] + b[i]
	}
	maxSum := 0
	for i := 0; i < len(a)-k; i++ {
		if c[i+k]-c[i] > maxSum {
			maxSum = c[i+k] - c[i]
		}
	}
	fmt.Println(maxSum)
}

全部评论

相关推荐

点赞 2 评论
分享
牛客网
牛客企业服务