Josif_tepe

Untitled

Dec 3rd, 2025
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. const int maxn = 1005;
  5. typedef long long ll;
  6. const ll MOD = 1e9 + 7;
  7.  
  8. void subtract_module(ll &x, ll y) {
  9.     x -= y;
  10.     if(x < 0) {
  11.         x += MOD;
  12.     }
  13. }
  14. int main()
  15. {
  16.     ios_base::sync_with_stdio(false);
  17.     int n, K;
  18.     cin >> n >> K;
  19.    
  20.     vector<int> v(n);
  21.     for(int i = 0; i < n; i++) {
  22.         cin >> v[i];
  23.     }
  24.    
  25.     vector<ll> dp(K + 1);
  26.     dp[0] = 1;
  27.     for(int at = 0; at < n; at++) {
  28.         vector<ll> pref_sum(K + 1, 0);
  29.         for(int used_candies = K; used_candies >= 0; used_candies--) {
  30.             ll tmp = dp[used_candies];
  31.             int L = used_candies + 1;
  32.             int R = used_candies + min(v[at], K - used_candies);
  33.            
  34.             if(L <= R) {
  35.                 pref_sum[L] += tmp;
  36.                
  37.                 if(R + 1 <= K) {
  38.                     subtract_module(pref_sum[R + 1], tmp);
  39.                 }
  40.             }
  41.  
  42.         }
  43.         ll sum = 0;
  44.         for(int i = 0; i <= K; i++) {
  45.             sum += pref_sum[i];
  46.             sum %= MOD;
  47.             dp[i] += sum;
  48.             dp[i] %= MOD;
  49.         }
  50.     }
  51.    
  52.     cout << dp[K] << endl;
  53.     return 0;
  54. }
  55.  
Advertisement
Add Comment
Please, Sign In to add comment