Problem: problem

AOR Ika got a water tank with a size of $ 1 $ in length and $ N $ in width. The aquarium is tall enough to hold water. The aquarium has $ N-1 $ partitions and is evenly spaced into $ N $ compartments. When water was poured here, the height of the water in each section became $ a_i $.

AOR Ika decided to remove some dividers and reduce the number of compartments to $ M $ or less. When you have removed the dividers, find the maximum sum of the water heights in each compartment.

The thickness of the partition can be ignored.



input

$ N \ M $
$ a_1 \ cdots a_N $

output

Output the maximum value of the total water height of each section in one line. Also, output a line break at the end. It is acceptable if the relative or absolute error is less than or equal to $ 10 ^ {-6} $.

Example

Input

5 3
9 1 2 3 9


Output

20.000000

Solution (in CPP):

Solution:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using P = pair<ll,ll>;
using node = tuple<ll,int,int>;
const double inf = numeric_limits<double>::max()/3;

double acc[510];
double dp[510][510];

int main(void){
  int n,m;
  cin >> n >> m;
  acc[0] = 0.0;
  for(int i = 0;i < n;++i){
    double tmp;
    cin >> tmp;
    acc[i+1] = acc[i] + tmp;
  }
  fill(dp[0],dp[0] + 510*510, -inf);
  dp[0][0] = 0.0;
  for(int i = 1;i <= n;++i){
    for(int j = 1;j <= i;++j){
      for(int k = 0;k < i;++k){
        dp[i][j] = max(dp[i][j],
                       dp[k][j-1] + (acc[i]-acc[k])/(i-k));
      }
    }
  }
  double res = 0;
  for(int i = 1;i <= m;++i){
    res = max(res,dp[n][i]);   
  }
  cout << setprecision(15) << res << endl;
  return 0;
}