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 <algorithm>
#include <cstdio>
#include <vector>
#include <iostream>
using namespace std;

int main(){
  int N, M;
  cin >> N >> M;
  vector<double> A(N+1);
  for(int i = 0; i < N; ++i) cin >> A[i+1];
  for(int i = 0; i < N; ++i) A[i+1] += A[i];
  const double INF = 1e9;
  vector<vector<double>> dp(N+1,vector<double>(M+1,-INF));
  dp[0][0] = 0;
  for(int i = 0; i < N; ++i){
    for(int j = 0; j < M; ++j){
      for(int k = i+1; k <= N; ++k){
        double h = (A[k]-A[i])/(k-i);
        dp[k][j+1] = max(dp[k][j+1],dp[i][j]+h);
      }
    }
  }
  printf("%.12f\n",*max_element(dp[N].begin()+1, dp[N].end()));
}