求代码改进40pts
查看原帖
求代码改进40pts
790279
szk2022楼主2023/7/11 15:11
#include<bits/stdc++.h>
using namespace std;
int long long n,b,m,a[10001],dp2[10001],dp[10001];
int main(){
	scanf("%lld%lld%lld",&n,&b,&m);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
	}
	dp[0]=b;
	dp2[0]=b;
	for(int i=1;i<=n;i++){
		if(dp[i-1]+a[i]<=m){
			dp[i]=dp[i-1]+a[i];
			dp2[i]=dp2[i-1]-a[i];
		}else if(dp[i-1]+a[i]>m and dp[i-1]-a[i]>=0){
			dp[i]=dp[i-1]-a[i];
			dp2[i]=dp2[i-1]+a[i];
		}else if(dp[i-1]+a[i]>m and dp[i-1]-a[i]<0){
			dp[i]=dp[i-1]+a[i];
			dp2[i]=dp2[i-1]+a[i];
		}else{
			dp[i]=dp[i-1]-a[i];
			dp2[i]=dp2[i-1]-a[i];
		}
	}
	for(int i=0;i<=n;i++){
		dp[i]=max(dp[i],dp2[i]);
	}
	if(dp[n]>m and dp2[n]<=m){
		printf("%lld",dp2[n]);
	}else if(dp[n]<=m and (dp2[n]<=m or dp2[n]>m)){
		printf("%lld",dp[n]);
	}else{
		printf("-1");
	}
}

2023/7/11 15:11
加载中...