思路:
前缀和+最大子段和
CodeCodeCode:
#include <cstdio>
#include <iostream>
using namespace std;
int n,m;
long long ans[1000005],a[1000005],ans2;
int main ()
{
scanf("%d%d",&n,&m);
for (int i = 1; i <= n; ++i){
scanf("%lld",&a[i]);ans[i] = ans[i - 1] + a[i];//前缀和维护
}
m++;
for (int i = 0; i <= n - m; ++i)
ans2 = max (ans2, ans [i + m] - ans [i]);//最大子段和
printf("%lld",ans2);
}