xmuoj
//!皮卡丘分番茄酱
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;
int n, k;
int q[N];
vector<double> v;
bool iseaten(vector<double> v, double mid, int n){
if(accumulate(v.begin(), v.end(), 0.0) < mid * n) return false;
priority_queue<double> q;
for(auto t : v) q.push(t);
while(n --){
// if(fabs(mid - 15.75) < 1)
// cout << n << ' ' << q.top() << "*******" << endl;
if(q.top() - mid < 0){
return false;
}
else{
q.push(q.top() - mid);
q.pop();
}
}
return true;
}
void eaten(vector<double> v, int n){
// cout << "eaten++++++++++" << endl;
int nn = v.size();
double l = 0, r = v[nn - 1];
// cout << l << ' ' << r << endl;
while(r - l > 1e-6){
double mid = (l + r) / 2;
// cout << mid << "{{{{{" << endl;
if(iseaten(v, mid, n)) l = mid;
else r = mid;
}
cout << fixed << setprecision(4) << l << endl;
}
int main(){
cin >> k >> n;
for(int i = 0; i < k; ++i){
int x;
cin >> x;
v.push_back(x * x);
}
sort(v.begin(), v.end());
eaten(v, n);
// cout << setbase(16) << 19;
return 0;
}