41 lines
712 B
Go
41 lines
712 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
func main() {
|
|
var n, m int
|
|
fmt.Scanf("%d %d", &n, &m)
|
|
|
|
if m == 0 || n == 0 {
|
|
fmt.Println(0)
|
|
return
|
|
}
|
|
|
|
arr := make([]int, n)
|
|
result := make([]int, n)
|
|
|
|
// 输入数组
|
|
for i := 0; i < n; i++ {
|
|
fmt.Scan(&arr[i])
|
|
}
|
|
|
|
// 计算前缀和 + 滑动窗口
|
|
result[0] = arr[0]
|
|
for i := 1; i < n; i++ {
|
|
if i < m {
|
|
result[i] = result[i - 1] + arr[i]
|
|
} else {
|
|
result[i] = result[i - 1] + arr[i] - arr[i - m]
|
|
}
|
|
}
|
|
|
|
min := result[m - 1]
|
|
for i := m; i < n; i++ {
|
|
if result[i] < min {
|
|
min = result[i]
|
|
}
|
|
}
|
|
|
|
fmt.Printf("%d\n", min)
|
|
}
|