#include<iostream>
#include<vector>
#include<map>
using namespace std;
#define int long long
map<int,int> mp1,mp2;
vector<int> vec;
signed main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
int n,m; cin >> n >> m;
for(int i=0;i<n;++i){
int a; cin >> a;
vec.push_back(a);
}
for(int i=0;i<(1<<(n/2));++i){
int sum=0;
for(int j=0;j<n/2;++j){
if((i&(1<<j))==(1<<j)){
sum+=vec[j];
}
}
++mp1[sum];
}
for(int i=0;i<(1<<(n-n/2));++i){
int sum=0;
for(int j=0;j<n-n/2;++j){
if((i&(1<<j))==(1<<j)){
sum+=vec[j+n/2];
}
}
++mp2[sum];
}
int ans=0;
for(auto i:mp1){
for(auto j:mp2){
if(i.first+j.first>m) break;
ans+=i.second*j.second;
}
if(i.first>m) break;
}
cout << ans;
}
# | 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... |