第六个点过不了,求助
  • 板块P1714 切蛋糕
  • 楼主AloneV
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/10/19 16:27
  • 上次更新2023/10/27 06:54:06
查看原帖
第六个点过不了,求助
102605
AloneV楼主2022/10/19 16:27
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<queue>
#include<iostream>
#include<algorithm>
using namespace std;
int n, m, a[1000001], sum[1000001], ans;
int que[1000001], head = 1, tail;
int main()
{
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++)
	{	
		scanf("%d", &a[i]);
		sum[i] = sum[i - 1] + a[i];
	}
	for (int i = 1; i <= n; i++)
	{
		while (head <= tail && i - que[head] > m)	head++;
		while (head <= tail && sum[i] < sum[que[tail]])	tail--;
		que[++tail] = i;
		if (i >= m)	ans = max(ans, sum[que[tail]] - sum[que[head]]);
	}
	printf("%d", ans);
	return 0;
}
2022/10/19 16:27
加载中...