记录编号 593809 评测结果 WWWWWWWWWA
题目名称 数字游戏 最终得分 10
用户昵称 Gravatar何沛儒 是否通过 未通过
代码语言 C++ 运行时间 0.288 s
提交时间 2024-09-15 12:07:24 内存使用 6.91 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,s,t;
#define N 100005
#define ll long long
ll a[N];
ll ans = 1e15;
struct tree{
	int l,r;
	ll minn;
}tr[4*N];
void build(int p,int l,int r){
	tr[p].l = l,tr[p].r = r,tr[p].minn=1e15;
	if(l == r){
		tr[p].minn = a[l];
		return;
	}
	int mid = l+r >> 1;
	build(p*2,l,mid);
	build(p*2+1,mid+1,r);
	tr[p].minn = min(tr[p*2].minn,tr[p*2+1].minn);
}
ll modify(int p,int l,int r){
	if (l>tr[p].r || r<tr[p].l) return 1e15;
	if(tr[p].l >= l && tr[p].r <= r) return tr[p].minn;
	int mid = tr[p].l + tr[p].r >> 1;
	ll anss = 1e15;
	if(l <= mid) anss = min(ans,modify(p*2,l,r));
	if(r > mid) anss = min(ans,modify(p*2+1,l,r));
	return anss;
}
int main(){
	freopen("ggame.in","r",stdin);
	freopen("ggame.out","w",stdout);
	cin >> n >> s >> t;
	for(int i = 1; i <= n; i++){
		scanf("%lld",&a[i]);
		a[i] += a[i-1];
	}
	build(1,1,n);
	ans = a[s];
	for(int i = s+1; i <= n; i++){
		if(i-t <= 0)ans = max(ans,a[i]-max((long long)0,modify(1,1,i-s)));
		else ans = max(ans,a[i]-modify(1,i-t,i-s));
	}
	printf("%lld",ans);
	return 0;
}