#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int n; ll m;
ll c[45];
bool mode = 0;
vector<ll> v1, v2;
void rec(int l, int r, ll sum = 0) {
if(l > r) {
if(mode) v2.push_back(sum);
else v1.push_back(sum);
return ;
}
rec(l+1, r, sum);
rec(l+1, r, sum + c[l]);
}
int main() {
cin.tie(0) -> sync_with_stdio(0);
cin >> n >> m;
for(int i=1;i<=n;i++) cin >> c[i];
rec(1, min(n, 20)); mode = 1;
if(n > 20) rec(21, n);
else v2.push_back(0);
sort(v2.begin(), v2.end());
ll sum = 0;
for(auto &e:v1) {
sum += (upper_bound(v2.begin(), v2.end(), m-e) - v2.begin());
}
cout << sum;
}
# | 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... |