提交记录
#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;
}