最大子序列和模板 用单调队列

最大子序列和模板 用单调队列

include

include

include<stdio.h>

using namespace std;
const int N=300100;
int sum[N];
int ans=-N;
int q[N];
int main()
{int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>sum[i];
sum[i]+=sum[i-1];
}
int l=1,r=1;
for(int i=1;i<=n;i++)
{
while(l<=r&&q[l]<i-m)l++;
ans=max(ans,sum[i]-sum[q[l]]);
while(l<=r&&sum[q[r]]>=sum[i])r--;
q[++r]=i;
}
cout<<ans;
}

posted @ 2020-02-05 12:19  arbor_one  阅读(135)  评论(0)    收藏  举报