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;
constexpr int IINF = INT_MAX;

double dp[505][505];  // i番目の区画までみてj個の区画を確定したときの最大値

int main() {
    int n, m;
    cin >> n >> m;
    vector<double> a(n+1, 0);
    for(int i=0;i<n;i++){
        cin >> a[i+1];
        a[i+1] += a[i];
    }
    for(int i=0;i<=n;i++) fill(dp[i], dp[i]+m+1, -IINF);
    dp[0][0] = 0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            for(int k=j;k<=i;k++){
                dp[i+1][j+1] = max(dp[i+1][j+1], dp[k][j] + (a[i+1]-a[k])/(i+1-k));
            }
        }
    }
    printf("%.10lf\n", dp[n][m]);
    return 0;
}