Advertisement
at3107

Untitled

Oct 19th, 2020
2,060
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. int dp[51][101][51],mod=1e9+7;
  5.  
  6. int fun(int ind,int curr_max,int cost,int n,int m)
  7. {
  8.     if(ind==n) return cost==0;
  9.     if(cost<0) return 0;
  10.     if(dp[ind][curr_max][cost]!=-1) return dp[ind][curr_max][cost];
  11.     int ans=0;
  12.     for(int i=1;i<=m;i++) ans+=fun(ind+1,(i>curr_max?i:curr_max),cost-(i>curr_max),n,m),ans%=mod;
  13.     return dp[ind][curr_max][cost]=ans;
  14. }
  15. int32_t main()
  16. {
  17.     int n;
  18.     cin>>n;
  19.     int num[n],size[n],cost[n];
  20.     for(int i=0;i<n;i++) cin>>num[i];
  21.     cin>>n;
  22.     for(int i=0;i<n;i++) cin>>size[i];
  23.     cin>>n;
  24.     for(int i=0;i<n;i++) cin>>cost[i];
  25.     vector<int> v;
  26.     for(int i=0;i<n;i++)
  27.     {
  28.         memset(dp,-1,sizeof(dp));
  29.         int ans=0;
  30.         for(int j=1;j<=size[i];j++) ans+=fun(1,j,cost[i],num[i],size[i]), ans%=mod;
  31.         v.push_back(ans);
  32.     }
  33.     for(int i=0;i<n;i++) cout<<v[i]<<endl;
  34.     return 0;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement