30pts求条QAQ
查看原帖
30pts求条QAQ
1353095
sisiji楼主2025/1/20 15:01

提交记录

#include <bits/stdc++.h>
using namespace std ;
int n; 
int beginLevel , maxLevel , minLevel ; 
int c[55];
bool dp[55][1005] ;
signed main(){
	cin >> n >> beginLevel >> maxLevel ;
	dp[1][beginLevel] = true ;
	for(int i = 1;i <= n;i++){
		cin >> c[i] ;
	}
	for(int i = 1;i <= n;i++){
		for(int j = maxLevel;j >= 0;j--) {
			if(dp[i - 1][j] && j + c[i] <= maxLevel) dp[i][j + c[i]] = true ;
			if(dp[i - 1][j] && j - c[i] >= minLevel) dp[i][j - c[i]] = true ;
		}
	}
	for(int i = maxLevel;i >= 0;i--) {
		if(dp[n][i]){
			cout << i;
			return 0;
		}
	}
	cout << -1;
	return 0;
}
2025/1/20 15:01
加载中...