#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... |