#include <bits/stdc++.h>
using namespace std;
#define ll unsigned long long
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll n, k, counts=0;
cin>>n>>k;
vector <ll> vect(n);
vector <ll> one;
vector <ll> two;
for (int i=0; i<n; ++i){
cin>>vect[i];
}
for (int i=1; i<(1<<n/2); ++i){
ll sum = 0;
for (int j=0; j<n/2; ++j){
if (i&(1<<j)){
sum+=vect[j];
}
}
if (sum<=k){
one.push_back(sum);
}
}
for (int i=1; i<(1<<(n-n/2)); ++i){
ll sum = 0;
for (int j=0; j<(n-n/2); ++j){
if (i&(1<<j)){
sum+=vect[j+n/2];
}
}
if (sum<=k){
two.push_back(sum);
}
}
sort(two.begin(), two.end());
for (int i=0; i<one.size(); ++i){
counts+=upper_bound(two.begin(), two.end(), k-one[i])-two.begin();
}
cout<<counts+1+one.size()+two.size();
}
# | 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... |