#include <bits/stdc++.h>
using namespace std;
int n;
long long m;
vector<long long>v1,v2,sum1,sum2;
void read(){
cin>>n>>m;
int jum=n/2;
int i;
for(i=1;i<=jum;++i){
long long nr;
cin>>nr;
v1.push_back(nr);
}
for(i=jum+1;i<=n;++i){
long long nr;
cin>>nr;
v2.push_back(nr);
}
}
void gen_sum(vector<long long>&v,vector<long long>&sum,int ind,long long sm){
if(ind==(int)v.size())
sum.push_back(sm);
else{
gen_sum(v,sum,ind+1,sm);
gen_sum(v,sum,ind+1,sm+v[ind]);
}
}
long long solve(){
sort(sum1.begin(),sum1.end());
sort(sum2.begin(),sum2.end());
int id=(int)sum2.size()-1;
int i;
long long cnt=0;
for(i=0;i<(int)sum1.size();++i){
while(id>=0 && sum1[i]+sum2[id]>m)
--id;
cnt+=id+1;
}
return cnt;
}
int main()
{
read();
gen_sum(v1,sum1,0,0);
gen_sum(v2,sum2,0,0);
cout<<solve();
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... |