Submission

Status:

PPPPPTPPPP-PPPPP

Subtask/Task Score:

140/160

Score: 140

User: august

Problemset: Chocolate

Language: cpp

Time: 1.083 second

Submitted On: 2026-03-22 20:27:36

#include <bits/stdc++.h>
using namespace std;

#define pi pair<int,int>
const int N = 5001, MOD = 1e9+7;

int n,k,c,l,r;

int a[N];

int pow(int base, int ex) {
    if (base == 0 && ex == 0) return 1;
    if (base == 1) return 1;

    int ans=1;
    while (ex >= 1) ans *=base,ex--;
    return ans;
}

int32_t main() {
    cin.tie(0)->sync_with_stdio(0);
    
    cin>> n>> k>> c;
    for (int i=1; i<=n; i++) cin>> a[i];
    cin>> l>> r;

    
    vector<int> dp(N,0);
    dp[0] = 1;
    for (int part=1; part<=k; part++) {
        vector<int> ndp(N,0);
        for (int i=0; i<n; i++) {
            if (dp[i] == 0) continue;

            int curval = 0;
            for (int j=i+1; j<=n; j++) {
                int add = pow(j-i-1, c)*a[j];
                curval += add;

                if (curval < l) continue;
                if (curval > r) break;
                ndp[j] = (dp[i] + ndp[j])%MOD; 
            }
        }
        dp = ndp;
    }
    cout<< dp[n];
}