Submission

Status:
PPPPPxPPPPPPPPPP

Score: 150

User: YoruoniVamp

Problemset: Chocolate

Language: cpp

Time: 0.072 second

Submitted On: 2025-03-14 21:32:45

// YoruoniVamp - VTUBE
// Pragma Credit to Discord: pxsithexahydride
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,no-stack-protector,inline-small-functions,inline,unsafe-math-optimizations,omit-frame-pointer,inline-functions-called-once")
#include <bits/stdc++.h>
#pragma GCC target("avx2,fma,popcnt,lzcnt,bmi,bmi2,sse4.2,tune=native")
using namespace std;
#define endl '\n'
#define ll long long
#define ld long double
#define ull unsigned ll
#define cint const int
#define cf const float

cint mxA = 1e6+5, MOD = 1e9+7, INF = 0x3f3f3f3f;
cint d4x[4] = {0, 1, 0, -1}, d4y[4] = {1, 0, -1, 0};
cint d8x[8] = {0, 1, 1, 1, 0, -1, -1, -1}, d8y[8] = {1, 1, 0, -1, -1, -1, 0, 1};

ll biex(int b, int p){
    if(p==0) return 1;
    ll res = biex(b,p/2);
    return (p%2?res*res*b:res*res);
}

void solve(){
    int n, k, c; cin >> n >> k >> c;
    int arr[n+1];
    for(int i = 0; i < n; i++) cin >> arr[i];
    int l, r; cin >> l >> r;
    int dp[n+1][k+1]; memset(dp,0,sizeof(dp));
    dp[n][0] = 1;
    for(int i = n-1; i >= 0; i--){
        ll sum = 0;
        for(int j = i; j < n; j++){
            sum += biex(j-i,c)*arr[j];
            if(l<=sum&&sum<=r){
                for(int ii = 0; ii < k; ii++) dp[i][ii+1] = (dp[i][ii+1]+dp[j+1][ii])%MOD;
            }
        }
    }
    
    // for(int i = 0; i <= n; i++){
    //     for(int j = 0; j <= k; j++) cout << dp[i][j] << ' ';
    //     cout << endl;
    // }

    cout << dp[0][k];
    return;
}

int main(){
    cin.tie(nullptr)->sync_with_stdio(0);cout.tie(0);
    // freopen("", "r", stdin);
    // freopen("", "w", stdout);
    int t = 1;
    // cin >> t;
    while(t--) solve();
    return 0;
}