Submission

Status:
xPPPP-PPPPPPPPPP

Score: 140

User: detectives_conan

Problemset: Chocolate

Language: cpp

Time: 0.140 second

Submitted On: 2025-03-13 15:07:17

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int mod = 1e9 + 7;
int n, k, c, L, R;
int arr[2501];
int qs[2501][2501];
int dp[2][2501];

int power(int n, int a){
  if(n==0 && a==0) return 1;
  return pow(n, a);
}

signed main() {
    cin.tie(nullptr)->sync_with_stdio(false);
    cin >> n >> k >> c;
    for (int i = 1; i <= n; ++i) cin >> arr[i];
    cin >> L >> R;
    for (int i = 1; i <= n; ++i) {
        for (int j = i; j <= n; ++j) {
            qs[i][j] = qs[i][j - 1] + (power(j - i, c) * arr[j]);
            if(qs[i][j] > R) break;
        }
    }
    for (int i = 1; i <= n; ++i) {
        if (qs[1][i] >= L && qs[1][i] <= R) dp[1][i] = 1;
    }
    for (int i = 2; i <= k; ++i) {
        int cur = i&1, pre = cur^1;
        for (int j = 1; j <= n; ++j) {
            dp[cur][j] = 0;
            for (int kk = 1; kk < j; ++kk) {
                if (qs[kk + 1][j] < L || qs[kk + 1][j] > R) continue;
                dp[cur][j] += dp[pre][kk];
                dp[cur][j] %= mod;
            }
        }
    }

    cout << dp[k&1][n];

    return 0;
}