#include "bits/stdc++.h"
using namespace std;
#ifdef duc_debug
#include "bits/debug.h"
#else
#define debug(...)
#endif
const int maxn = 105;
const int K = 2555;
int n, l, r, k;
int a[maxn];
int f[maxn][maxn][K];
int g[maxn][maxn][K];
void solve() {
  cin >> n >> l >> r >> k;
  int mx_prof = n * (n + 1) / 4;
  debug(mx_prof);
  for(int i = 1; i <= n; ++i) {
    cin >> a[i];
  }
  for(int i = 1; i < l; ++i) {
    for(int j = l; j <= r; ++j) {
      for(int prof = 0; prof <= min(k, mx_prof); ++prof) {
        f[i][j][prof] = max(f[i - 1][j][prof], f[i][j - 1][prof]);
        if(prof >= j - i) {
          f[i][j][prof] = max(f[i][j][prof], f[i - 1][j - 1][prof - j + i] + a[j] - a[i]);
        }
      }
    }
  }
  for(int i = n; i > r; --i) {
    for(int j = r; j >= l; --j) {
      for(int prof = 0; prof <= min(k, mx_prof); ++prof) {
        g[i][j][prof] = max(g[i + 1][j][prof], g[i][j + 1][prof]);
        if(prof >= i - j) {
          g[i][j][prof] = max(g[i][j][prof], g[i + 1][j + 1][prof - i + j] + a[j] - a[i]);
        }
      }
    }
  }
  int res = 0;
  for(int i = l - 1; i <= r; ++i) {
    for(int prof = 0; prof <= k; ++prof) {
      if(res < f[l - 1][i][min(prof, mx_prof)] + g[r + 1][i + 1][min(k - prof, mx_prof)]) {
        res = max(res, f[l - 1][i][min(prof, mx_prof)] + g[r + 1][i + 1][min(k - prof, mx_prof)]);
      }
    }
  }
  int sum = 0;
  for(int i = l; i <= r; ++i) {
    sum += a[i];
  }
  cout << sum - res;
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.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... |