#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fs first
#define sc second
#define pb push_back
#define rep(i,a,b) for(int i=a; i<=b; i++)
const int N=2000005;
int a[N],l,sum,ans;
vector<int> vec1,vec2,vec;
void sum1(int l , int r , int sum){
if(l==r+1){
vec1.pb(sum);
return ;
}
sum1(l+1,r,sum);
sum1(l+1,r,sum+a[l]);
}
void sum2(int l , int r , int sum){
if(l==r+1){
vec2.pb(sum);
return ;
}
sum2(l+1,r,sum);
sum2(l+1,r,sum+a[l]);
}
signed main(){
int n, m;cin>>n>>m;
for(int i=1; i<=n; i++){
cin>>a[i];
}
sum1(1,n/2,0);
sum2(n/2+1,n,0);
sort(vec1.begin(),vec1.end());
sort(vec2.begin(),vec2.end());
// for(auto x:vec1){
// cout<<x<<" ";
// }
// cout<<endl;
// for(auto x:vec2){
// cout<<x<<" ";
// }
// cout<<endl;
l=vec2.size();
l--;
for(int i=0; i<vec1.size(); i++){
if(l<0)break;
while(vec1[i]+vec2[l]>m and l>=0){
l--;
}
ans+=(l+1);
}
cout<<ans<<endl;
}
# | 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... |