求助
  • 板块P1714 切蛋糕
  • 楼主Chouquet
  • 当前回复6
  • 已保存回复6
  • 发布时间2020/7/15 21:21
  • 上次更新2023/11/6 23:03:49
查看原帖
求助
207812
Chouquet楼主2020/7/15 21:21
#include <stdio.h>
#include <deque>
#define max(a,b) ((a)>(b)?(a):(b))
int n,m,p,s[500003],ans=-(1<<30);std::deque<int> q;
main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++) scanf("%d",&p),s[i]=s[i-1]+p;
    for(int i=1;i<=n;i++){
        while(q.size()&&q.front()+m<i) q.pop_front();
        while(q.size()&&s[q.back()]>=s[i]) q.pop_back();
        ans=max(ans,s[i]-s[q.front()]);q.push_back(i);
    }
    printf("%d\n",ans);return 0;
}

这份代码在vscode里输出不了结果,但提交后却过了,求解释

2020/7/15 21:21
加载中...