#include<iostream> #include<vector> #include<algorithm> usingnamespace std; vector<double>nums(100), suf(100); int n, m; int mcnt = 2e9; voiddfs(int i, double sum, int cnt) { if (cnt >= m)return ; if (sum == m) { mcnt = min(cnt, mcnt); return ; } if (i == n || sum > m || suf[i] + sum < m) { // cout<<sum<<endl; return ; } dfs(i + 1, sum + nums[i], cnt); dfs(i + 1, sum, cnt); dfs(i + 1, sum + nums[i] / 2, cnt + 1);
}
intmain() { // 请在此输入您的代码
cin>>n>>m; for (int i = 0; i < n; i++)cin>>nums[i]; sort(nums.begin(), nums.end(), greater<>()); for (int i = n - 1; i >= 0; i--)suf[i] = suf[i + 1] + nums[i]; dfs(0, 0, 0); mcnt == 2e9 ? cout<< -1 : cout<<mcnt; return0; }