10pts求改
查看原帖
10pts求改
790279
szk2022楼主2023/7/2 15:36
#include<bits/stdc++.h>
using namespace std;
long long n,b,m,ansm=INT_MIN,ans,ans2,k=1,a[1000001];
int maxn(){
	if(ans+a[k]<=m and k<=n){
		ans+=a[k];
		ans2-=a[k];
		if(ans2<0){
			ans2=-1;
		}
		ansm=max(ans,ansm);
		ansm=max(ansm,ans);
		k++;
		maxn();
	}else if(ans-a[k]<=m and k<=n){
		ans-=a[k];
		if(ans<0){
			ans=-1;
		}
		ans2+=a[k];
		ansm=max(ans,ansm);
		ansm=max(ansm,ans);
		k++;
		maxn();
	}else if(ans+a[k]>m or ans-a[k]<0 and k<=n){
		ans=-1;
		k++;
		maxn();
	}
	return ansm;
}
int main(){
	cin>>n>>b>>m;
	ans=b;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	maxn();
	cout<<ansm;
	return 0;
}
2023/7/2 15:36
加载中...