fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4.  
  5. vector<ll> subset_sum(vector<ll> v,int n)
  6. {
  7. ll range=(2<<n),i;
  8. vector<ll> ans;
  9. for(i=0;i<=range;i++)
  10. {
  11. ll j=i,idx=0,sum=0;
  12. while(j>0)
  13. {
  14. if(j&1)
  15. sum+=v[idx];
  16. j=j>>1;
  17. idx++;
  18. }
  19. ans.push_back(sum);
  20. }
  21. return ans;
  22. }
  23.  
  24. main()
  25. {
  26.  
  27. ios_base::sync_with_stdio(false);
  28. cin.tie(0);
  29.  
  30. ll n,a,b,i;
  31. cin>>n>>a>>b;
  32.  
  33. ll ele;
  34. vector<ll> v1,v2;
  35. for(i=0;i<n;i++)
  36. {
  37. cin>>ele;
  38. if(i<=(n/2))
  39. v1.push_back(ele);
  40. else
  41. v2.push_back(ele);
  42. }
  43.  
  44. ll n1=v1.size();
  45. ll n2=v2.size();
  46. vector<ll> sv1,sv2;
  47. sv1=subset_sum(v1,n1);
  48. sv2=subset_sum(v2,n2);
  49.  
  50. sort(sv2.begin(),sv2.end());
  51. ll ans=0;
  52. for(auto it:sv1)
  53. {
  54. ll lb=lower_bound(sv2.begin(),sv2.end(),a-it)-sv2.begin();
  55. ll ub=upper_bound(sv2.begin(),sv2.end(),b-it)-sv2.begin();
  56. ans+=(ub-lb);
  57.  
  58. }
  59. cout<<ans;
  60.  
  61.  
  62. }
  63.  
Time limit exceeded #stdin #stdout 5s 4210688KB
stdin
Standard input is empty
stdout
Standard output is empty