#include <bits/stdc++.h> using namespace std; const int maxn = 300050; int a[maxn]; int n, x, m, sum; int f[maxn]; //满足花费>x且最小-->在删掉不超过sum-x的条件下,求删掉的最大价值 int main() { cin >> n >> x; for (int i = 0; i < n; i++) { cin >> a[i]; sum += a[i]; } int m = sum - x; // 删掉的最大价值 for (int i = 0; i < n; i++) { // 前i件物品 for (int j = m; j >= a[i]; j--) { // 背包容量为j(可删掉的价值) f[j] = max(f[j], f[j - a[i]] + a[i]); // 不删 or 删 } } cout << sum - f[m]; }