一个问题
  • 板块P1714 切蛋糕
  • 楼主wo_hen_la
  • 当前回复1
  • 已保存回复2
  • 发布时间2024/3/27 13:37
  • 上次更新2024/3/27 16:56:31
查看原帖
一个问题
794701
wo_hen_la楼主2024/3/27 13:37
#include <bits/stdc++.h>
#define int long long
#define N 500005
using namespace std;
int n,k;
int q[N],a[N];
void mx()
{
	int l=1,r=1,ans=-1e18;//为什么l和r的初始值不是l=1,r=0。不然只有60pts
	for(int i=1;i<=n;i++){
		while(l<=r && a[q[r]]>=a[i]) r--;
		q[++r]=i;
		if(q[l]<i-k) l++;
		//cout<<a[i]<<" "<<a[q[l]]<<"\n";
		ans=max(ans,a[i]-a[q[l]]);
	}
	cout<<ans;
}
main()
{
	ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		a[i]+=a[i-1];
	}
	mx();
	return 0;
}
2024/3/27 13:37
加载中...