sb題,DP搞不成,解空間太大了。2的31次方
由於數的個數很少,但是解空間很大,加了個剪紙瞎逼搜就過去了
/*
ID: daniel.20
LANG: JAVA
TASK: tour
*/
import java.util.*;
import java.io.*;
class pb1{
int n,c;
int arr[];
long sum[];
long max = 0;
void solver() throws IOException{
//Scanner scan = new Scanner(System.in);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(reader.readLine());
n = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
arr = new int[n+1];
sum = new long[n+1];
for(int i=1;i<=n;i++){
arr[i] = Integer.parseInt(reader.readLine());
sum[i] = sum[i-1]+arr[i];
}
dfs(n,c,0);
System.out.println(max);
}
void dfs(int i, int left, int cur){
if(left<0) return;
if(cur>max) max=cur;
if(i<1) return;
if(sum[i]<left){
max = max<cur+sum[i]?cur+sum[i]:max;
return;
}
dfs(i-1,left-arr[i],cur+arr[i]);
dfs(i-1,left,cur);
}
}
public class tour {
public static void main(String[] args) throws Exception {
pb1 p = new pb1();
p.solver();
}
}