记录编号 252920 评测结果 AAAAAAAAAA
题目名称 买汽水 最终得分 100
用户昵称 Gravatar‎MistyEye 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2016-04-21 11:08:06 内存使用 0.31 MiB
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
int read(){
	int x=0; char ch=getchar();
	while(ch<'0'||ch>'9')ch=getchar();
	while(ch>='0'&&ch<='9'){
		x=x*10+ch-'0';
		ch=getchar();
	}
	return x;
}
using namespace std;
int N, M, m[55];
int end[55];
int ans =0;
void dp(int n, int v){
	ans =max(ans, v);
	if(n>=N||ans==M)return;
	for(int i=n+1; i<=N; i++){		
		if(m[i]>M-v)return;
		if(end[i]+v<=ans)return;
		dp(i, v+m[i]);
	}
	return;
}
int main(){
	freopen("drink.in","r",stdin);
	freopen("drink.out","w",stdout);
	N =read(), M =read();
	for(int i=1; i<=N; i++)m[i] =read();
	sort(m+1, m+N+1);
//	for(int i=1; i<=N; i++)printf("%d ", m[i]);
	for(int i=N; i>=1; i--)end[i]=m[i]+end[i+1];
//	for(int i=1; i<=N; i++)printf("%d ", end[i]);
	dp(0, 0);
	printf("%d", ans);
	return 0;
}