#include <bits/stdc++.h>
using namespace std;
vector<long long int>v,res[2];
void resi(int l,int r,long long int sum,int a)
{
res[a].push_back(sum);
if(l==r)return;
for(int i=l;i<r;i++)
{
resi(i+1,r,sum+v[i],a);
}
}
int main()
{
long long int n,m,a;
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>a;
v.push_back(a);
}
resi(0,n/2,0,0);
resi(n/2,n,0,1);
sort(res[0].begin(),res[0].end());
sort(res[1].begin(),res[1].end());
long long int ans=0,l=0,r=res[1].size()-1;
while(l<res[0].size()&&r>=0)
{
if(res[0][l]+res[1][r]<=m)
{
ans+=r+1;
l++;
}
else
{
r--;
}
}
cout<<ans;
return 0;
}
# | 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... |