Advertisement
Naxocist

toi19_energy

May 27th, 2023
746
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.61 KB | Source Code | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 303, mod = 1e9 + 7;
  4. using ll = long long;
  5. ll n, k, d, qs[N], dp[N][N][13];
  6.  
  7. ll f(int l, int r, int k) {
  8.     if(k == 1) return 1;
  9.     if(dp[l][r][k] != -1) return dp[l][r][k];
  10.  
  11.     ll s = 0;
  12.     for(int m=l; m<r; ++m) {
  13.         ll left = qs[m] - qs[l-1], right = qs[r] - qs[m];
  14.         if(abs(left - right) > d) continue ;
  15.         s += f(l, m, k-1) * f(m+1, r, k-1);
  16.         s %= mod;
  17.     }
  18.  
  19.     return dp[l][r][k] = s;
  20. }
  21.  
  22. int main() {
  23.     cin >> n >> k >> d;
  24.     for(int i=1; i<=n; ++i) {
  25.         cin >> qs[i]; qs[i] += qs[i-1];
  26.     }
  27.     memset(dp, -1, sizeof dp);
  28.     cout << f(1, n, k);
  29.     return 0;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement