Submission

Status:

xxxxxxxxxxxxxxxx

Score: 0

User: pxsit

Problemset: Chocolate

Language: cpp

Time: 0.001 second

Submitted On: 2025-03-13 14:54:42

#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 ll long long
ll mod = 1e9 + 7, dp[5005][5005], vis[5005], ddp[5005];

ll poww(ll x, ll y)
{
    if (vis[x])
        return ddp[x];
    vis[x] = 1;
    ll sum = 1;
    for (int i = 0; i < y; i++)
        sum *= x;
    return ddp[x] = sum;
}

int main()
{
    ios::sync_with_stdio(0), cin.tie(0);
    int n, k, c;
    cin >> n >> k >> c;
    ll a[n], lo, hi;
    for (auto &e : a)
        cin >> e;
    cin >> lo >> hi;
    dp[n][0] = 1;
    for (int i = n - 1; i >= 0; i--)
    {
        ll sum = 0;
        for (int j = i; j < n; j++)
        {
            sum += poww(j - i, c) * a[j];
            if (sum >= lo && sum <= hi)
            {
                for (int l = 0; l < k; l++)
                    dp[i][l + 1] += dp[j + 1][l], dp[i][l + 1] %= mod;
            }
        }
    }
    cout << dp[0][k] << '\n';
}