Submission
Status:
PPPPPTPPPP-PPPPP
Subtask/Task Score:
140/160
Score: 140
User: august
Problemset: Chocolate
Language: cpp
Time: 1.086 second
Submitted On: 2026-03-22 20:31:29
#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];
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;
long long pow[N]={};
if (c==0) pow[0] = 1;
for (int i=1; i<=n; i++) {
int ans = 1;
for (int j=1; j<=c; j++) ans*=i;
pow[i] = ans;
if (pow[i] > 2000000000) break;
}
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]*a[j];
curval += add;
if (curval < l) continue;
if (curval > r) break;
ndp[j] = (dp[i] + ndp[j])%MOD;
}
}
dp = ndp;
}
cout<< dp[n];
}