fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define vi vector<int>
  4. vi arr,dp;
  5. int m=1e9+7,o=1e9+6,n,s;
  6. int solve(int s)
  7. {
  8. if (s==0) return 1;
  9. if (s<0) return 0;
  10. if (dp[s]!=-1) return dp[s];
  11. int ans=0;
  12. for (int i=0;i<n;i++){
  13. ans=(ans+solve(s-arr[i]))%m;
  14. }
  15. return dp[s]=ans;
  16. }
  17. int main()
  18. {
  19. ios_base::sync_with_stdio(false);
  20. cin.tie(NULL);
  21. cout.tie(NULL);
  22. int t=1;
  23. //cin>>t;
  24. while(t--){
  25. cin>>n>>s;
  26. arr.resize(n);
  27. dp.resize(s+1);
  28. for (int i=0;i<=s;i++) dp[i]=-1;
  29. for (int i=0;i<n;i++) cin>>arr[i];
  30. cout<<solve(s);
  31. }
  32. }
Success #stdin #stdout 0.01s 5424KB
stdin
3 9
2 3 5
stdout
8