比赛 20160420s 评测结果 AAAAAAAAAA
题目名称 买汽水 最终得分 100
用户昵称 WAHT 运行时间 0.003 s
代码语言 C++ 内存使用 0.28 MiB
提交时间 2016-04-20 09:50:14
显示代码纯文本
  1. #include<iostream>
  2. #include<cstring>
  3. #include<cstdio>
  4. #include<algorithm>
  5. #include<cmath>
  6. using namespace std;
  7. #define ll long long
  8. ll w[50],s[50],ans;
  9. bool cm(int a,int b){ return a>b;}
  10. bool f[50];
  11. ll n,m;
  12. void dfs(int x,ll now)
  13. {
  14. ans=max(ans,now);
  15. if(ans==m||ans+w[n]>m) return;
  16. for(int i=x+1;i<=n;i++)
  17. {
  18. if(now+w[i]>m) break;
  19. if(now+s[i]<=ans) break;
  20. dfs(i,now+w[i]);
  21. }
  22. }
  23. int main()
  24. {
  25. freopen("drink.in","r",stdin);
  26. freopen("drink.out","w",stdout);
  27. cin>>n>>m;
  28. for(int i=1;i<=n;i++) cin>>w[i];
  29. sort(w+1,w+1+n,cm);
  30. for(int i=n;i>=1;i--) s[i]=s[i+1]+w[i];
  31. dfs(0,0);
  32. cout<<ans<<endl;
  33. }