#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 40;
long long v[MAX_N];
vector<long long> costs;
int main() {
int n;
long long m;
cin >> n >> m;
for (int i = 0; i < n; i++)
cin >> v[i];
int k = n / 2;
for (int mask = 0; mask < (1 << k); mask++) {
long long c = 0;
for (int i = 0; i < k; i++)
c += v[i] * ((mask >> i) & 1);
costs.push_back(c);
}
sort(costs.begin(), costs.end());
long long ans = 0;
for (int mask = 0; mask < (1 << (n - k)); mask++) {
long long c = 0;
for (int i = 0; i < n - k; i++)
c += v[i + k] * ((mask >> i) & 1);
ans += upper_bound(costs.begin(), costs.end(), m - c) - costs.begin();
}
cout << ans << "\n";
return 0;
}
# | 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... |