样例能过 ,却是 50 分
玄关求助
源码 :
#include <iostream>
#include <stdio.h>
#include <string>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#define INF 0x7fffffff
#define int long long
#define re register
#define in inline
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std ;
int n ;
int beginLevel , maxLevel , minLevel ;
int c[55] ;
bool dp[55][1005] ;
signed main ( ) {
ios ;
dp[1][beginLevel] = true ;
cin >> n >> beginLevel >> maxLevel ;
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] and j + c[i] <= maxLevel) dp[i][j + c[i]] = true ;
if(dp[i - 1][j] and j - c[i] >= minLevel) dp[i][j - c[i]] = true ;
}
}
for(int i = maxLevel ; i >= 0 ; i --) {
if(dp[n][i]) {
cout << i << '\n' ;
return 0 ;
}
}
cout << -1 << '\n' ;
return 0;
}
烦请 DALAO 帮助 本蒟蒻 AC 一下