蒟蒻80分求助
  • 板块P1714 切蛋糕
  • 楼主boss11
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/10/11 20:36
  • 上次更新2023/11/4 04:02:51
查看原帖
蒟蒻80分求助
354820
boss11楼主2021/10/11 20:36
#include<bits/stdc++.h>
#define ll long long
#define M 1000001
using namespace std;ll n,m;
ll p[M],pop,top,tas,ans,a[M];
void add(ll i)
{
    while(pop<top&&(p[pop+1]<=i-m||a[p[pop+1]]<0)){tas-=a[p[pop+1]];pop++;}
    //if(tas<0)tas=top=pop=0;
    ans=max(tas,ans);p[++top]=i;tas+=a[i];ans=max(ans,tas);
    if(tas<0){tas=pop=top=0;return;}
}
int main()
{
    cin>>n>>m;
    //if(m==0){cout<<'0';return 0;}
    for(ll i=1;i<=n;i++)scanf("%lld",&a[i]);
    for(ll i=1;i<=n;i++)add(i);
    cout<<ans;
}
2021/10/11 20:36
加载中...