题目
题解
跟 假期 一样,求前缀+单调队列
代码
#include<iostream>
#include<deque>
using namespace std;
long long n,k,a,s[200001],ans=-2147483647;
deque<int> e;
int main()
{
cin>>n>>k;
for(int i=1; i<=n; i++)
{
cin>>a;
s[i]=s[i-1]+a;//前缀和
}
for(int i=1; i<=n; i++)
{
while(!e.empty()&&s[e.back()]>s[i-1]) e.pop_back();
e.push_back(i-1);
while(!e.empty()&&e.front()<(i-k)) e.pop_front();//单调队列
ans=max(s[i]-s[e.front()],ans);
}
cout<<ans;
}