#include<bits/stdc++.h>
using namespace std;
#define int long long
void test_case() {
int n, k;
cin >> n >> k ;
int a[n];
for(int i = 0; i< n ; i++) cin >> a[i];
int q = n/2;
int p = n-n/2;
int a1= 1, b=1;
for(int i = 1; i<=q; i++) a1*=2;
for(int i = 1; i<=p; i++) b*=2;
vector<int> v1, v2;
for(int i = 0; i< a1; i++) {
string s = "";
int i1 = i;
for(int j = 0 ; j < q; j++) {
if(i1%2==0) s+='0';
else s+='1';
i1/=2;
}
int sum = 0;
for(int j = 0; j < n; j++) {
if(s[j]=='1') sum+=a[j];
}
if(sum<=k) v1.push_back(sum);
}
for(int i = 0; i< b; i++) {
string s = "";
int i1 = i;
for(int j = 0; j <p ; j++) {
if(i1%2==0) s+='0';
else s+='1';
i1/=2;
}
int sum = 0;
for(int j = 0; j < n; j++) {
if(s[j]=='1') sum+=a[j+q];
}
if(sum<=k) v2.push_back(sum);
}
sort(v1.begin(), v1.end());
sort(v2.begin(), v2.end());
int r = v2.size()-1;
int ans =0;
for(int i = 0; i < v1.size(); i++) {
while(v2[r]+v1[i]>k&&r>=0) r--;
ans+=r+1;
}
cout << ans;
}
signed main() {
int t;
t = 1;
while(t--) test_case();
}
# | 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... |