/Bò Ba-ri

<Problem>

https://oj.vnoi.info/problem/baric
              #include <iostream>
      using namespace std;
      
      #define MAX 1e9
      
      int main() {
        int n, E;
        cin >> n >> E;
      
        int* a = new int[n + 1];
      
        for (int i = 1; i <= n; i++) cin >> a[i];
      
        int maxVal = MAX;
        int numOfChoice = 0;
      
        int f[101][101];
        int d[101][101];
      
        for (int i = 1; i <= n; i++) {
          f[1][i] = 0;
          for (int j = 1; j <= n; j++) {
            f[1][i] = f[1][i] + 2 * abs(a[j] - a[i]);
          }
      
          if (f[1][i] <= E) {
            if (maxVal > f[1][i]) {
              maxVal = f[1][i];
              numOfChoice = 1;
            }
          }
        }
      
        if (numOfChoice == 1) {
          cout << numOfChoice << " " << maxVal << endl;
          return 0;
        }
        else {
          for (int i = 1; i <= n - 1; i++) {
            for (int j = i + 1; j <= n; j++) {
              d[i][j] = 0;
              for (int k = j; k <= n; k++) {
                d[i][j] = d[i][j] + 2 * abs(a[k] - a[j]) - 2 * abs(a[k] - a[i]);
              }
      
              for (int k = i + 1; k <= j - 1; k++) {
                d[i][j] = d[i][j] + abs(2 * a[k] - a[i] - a[j]) - 2 * abs(a[k] - a[i]);
              }
            }
          }
      
          
          for (int i = 2; i <= n; i++) {
            int maxVal = MAX;
            for (int j = 1; j <= n; j++) {
              if (j < i) f[i][j] = MAX;
              else {
                f[i][j] = MAX;
                for (int k = j - 1; k >= i - 1; k--) {
                  if (f[i][j] > f[i - 1][k] + d[k][j]) {
                    f[i][j] = f[i - 1][k] + d[k][j];
                  }
                }
              }
      
              if (f[i][j] <= E) {
                if (f[i][j] < maxVal) {
                  maxVal = f[i][j];
                }
                numOfChoice = i;
              }
            }
      
            if (numOfChoice != 0) {
              cout << numOfChoice << " " << maxVal << endl;
              return 0;
            }
          }
        }
      
        return 0;
      }