#include <bits/stdc++.h>
using namespace std;
#define int long long
int A[41], limit, n;
vector<int> L, R;
void sol(int l, int r, int k, vector<int> &v) {
if (k > limit) return;
if (r == l) {
v.push_back(k);
return;
}
sol(l, r - 1, k, v);
sol(l, r - 1, k + A[r], v);
}
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> limit;
for (int i = 1;i <= n;i++) cin >> A[i];
int m = (1 + n) / 2;
sol(1 - 1, m, 0, L);
sol(m + 1 - 1, n, 0, R);
sort(R.begin(), R.end());
int cnt = 0;
for (int x : L) {
for (int y : R) {
if (x + y <= limit) cnt++;
else break;
}
}
cout << cnt;
/* for (int x : L) cout << x << ' ';
cout << '\n';
for (int x : R) cout << x << ' '; */
return 0;
}
/*
5 1000
100 1500 500 500 1000
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |