最大子序列和模板 用单调队列
最大子序列和模板 用单调队列
#include<iostream>
#include<algorithm>
#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;
}
浙公网安备 33010602011771号