Advertisement
saurav_kalsoor

Untitled

Jun 3rd, 2021
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define MOD 1000000007
  4. #define endl '\n'
  5.  
  6. using namespace std;
  7.  
  8.  
  9.  
  10. void solve(){
  11. int n, k;
  12. cin>>n>>k;
  13. vector<int> arr(n);
  14. for(int i=0;i<n;i++)
  15. cin>>arr[i];
  16.  
  17. vector<vector<ll>> dp(n+1, vector<ll>(k+1, 0));
  18.  
  19. for(int i=1; i <= n; i++)
  20. dp[i][0] = 1;
  21.  
  22. vector<ll> pre1(k+1), pre2(k+1);
  23. pre1[0] = 1;
  24. for(int j = 1; j <= k; j++){
  25. if(arr[0] >= j){
  26. dp[1][j] = 1;
  27. }
  28. pre1[j] = pre1[j-1] + dp[1][j];
  29. }
  30.  
  31. for(int i = 2; i <= n; i++){
  32. pre2[0] = 1;
  33. for(int j = 1; j <= k ; j++){
  34. ll p = j - min(j, arr[i-1]) - 1;
  35. dp[i][j] = (pre1[j] - (p >= 0 ? pre1[p] : 0))%MOD;
  36. pre2[j] = pre2[j-1] + dp[i][j];
  37. }
  38. pre1 = pre2;
  39. }
  40.  
  41. cout<<dp[n][k]<<endl;
  42. }
  43.  
  44. signed main() {
  45. ios_base::sync_with_stdio(false);
  46. cin.tie(NULL);
  47.  
  48. solve();
  49.  
  50. }
  51.  
  52.  
  53.  
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement