分析:
用前缀和求区间和 其他单调队列
CODE:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int N=1e5+5;
typedef long long ll;
int n,k;
ll a[N],ans;
deque<int> q;
int main()
{
scanf("%d%d",&n,&k);
for(int i=1,x;i<=n;i++)
{
scanf("%d",&x);
a[i]=a[i-1]+x;
}
for(int i=1;i<=n;i++)
{
while(!q.empty()&&a[i]<a[q.back()]) q.pop_back();
q.push_back(i);
while(!q.empty()&&k+q.front()<i) q.pop_front();
ans=max(ans,a[i]-a[q.front()]);
}
printf("%lld",ans);
return 0;
}