josiftepe

Untitled

Nov 7th, 2020
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <fstream>
  4. using namespace std;
  5. const int MOD = 1e9 + 7;
  6.  int arr[100+1];
  7. int n;
  8. int dp[101][1000001];
  9. int rec(int i, int a)
  10. {
  11.     int sum=0;
  12.     if(dp[i][a] != -1) {
  13.         return dp[i][a];
  14.     }
  15.     if (a==0)
  16.         {
  17.             return 1;
  18.         }
  19.  
  20.     if (a-arr[i]>=0)
  21.     {
  22.  
  23.         sum+=rec(i, a-arr[i]);
  24.         if(sum >= MOD) {
  25.             sum -= MOD;
  26.         }
  27.     }
  28.     if (i+1<n)
  29.         {
  30.             sum+=rec(i+1, a);
  31.             if(sum >= MOD) {
  32.                 sum -= MOD;
  33.             }
  34.         }
  35.     dp[i][a] = sum;
  36.         return sum;
  37.  
  38. }
  39.  
  40.  
  41.  
  42.  
  43.  
  44. int main()
  45. {
  46.     ios_base::sync_with_stdio(false);
  47.     int x;
  48.     cin>>n>>x;
  49.  
  50.     for (int i=0;i<n;i++)
  51.     {
  52.         cin>>arr[i];
  53.  
  54.     }
  55. //   sort (arr, arr+n);
  56.     for(int i = 0; i < n; ++i) {
  57.         for(int j = 0; j <= x; ++j) {
  58.             dp[i][j] = -1;
  59.         }
  60.     }
  61.    cout<<rec(0,x)<<endl;
  62.  
  63.     return 0;
  64. }
  65. //869167734
  66. //869167734
  67.  
Advertisement
Add Comment
Please, Sign In to add comment