#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define pii pair <int , int>
#define ar3 array <int , 3>
using namespace std;
const int INF = 1e9 + 7;
const int maxn = 100 + 5;
const int maxk = 2507;
int n , a[maxn] , L , R , K;
int dpl[maxn][maxn][maxk];
int dpr[maxn][maxn][maxk];
void solve()
{
    cin >> n >> L >> R >> K;
    for(int i = 1; i <= n; i++) cin >> a[i];
    for(int i = L; i <= R; i++)
    {
        for(int j = 1; j < L; j++)
        {
            for(int k = 1; k < maxk; k++)
            {
                dpl[i][j][k] = min(dpl[i-1][j][k] , dpl[i][j-1][k]);
                if(i - j <= k)
                {
                    dpl[i][j][k] = min(dpl[i][j][k] , dpl[i-1][j-1][k - (i - j)] + (a[j] - a[i]));
                }
            }
        }
    }
    for(int i = R; i >= L; i--)
    {
        for(int j = n; j > R; j--)
        {
            for(int k = 1; k < maxk; k++)
            {
                dpr[i][j][k] = min(dpr[i+1][j][k] , dpr[i][j+1][k]);
                if(j - i <= k)
                {
                    dpr[i][j][k] = min(dpr[i][j][k] , dpr[i+1][j+1][k - (j - i)] + (a[j] - a[i]));
                }
            }
        }
    }
    int sum = accumulate(a+L , a+R+1 , 0);
    int ans = sum;
    for(int i = L-1; i <= R; i++)
    {
        int mn = 0;
        for(int j = K; j >= 0; j--)
        {
            mn = min(mn , dpr[i+1][R+1][K - j]);
            ans = min(ans , sum + (dpl[i][L-1][j] + mn));
        }
    }
    cout << ans << '\n';
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    solve();
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |