#include<bits/stdc++.h>
using namespace std;
const long long INF=2e18;
vector<long long> va,vb;
long long A[67];
void backtrack(int i,int n,long long val,bool ck)
{
if(i<=n)
{
backtrack(i+1,n,val,ck);
backtrack(i+1,n,min(INF,val+A[i]),ck);
}
else if(!ck) va.push_back(val);
else vb.push_back(val);
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
long long s;
cin>>n>>s;
for(int i=1;i<=n;i++) cin>>A[i];
backtrack(1,n/2,0,false);
backtrack(n/2+1,n,0,true);
sort(va.begin(),va.end());
sort(vb.begin(),vb.end());
long long ans=0,r=vb.size()-1;
for(auto v:va)
{
while(r>=0&&v+vb[r]>s) r--;
ans+=r+1;
}
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... |