#include #include #include using namespace std; int main() { long n, p; while (cin >> n >> p) { int * pole = new int[n]; for (long i = 0; i < n; i++) { cin >> pole[i]; } long index = n - 1; unsigned long long capacity = 0; double time = numeric_limits::max(); for (long i = n - 1; i >= 0; i--) { capacity += pole[i]; double nTime = (double)capacity / (double)((n - i) * p); if (nTime < time) { time = nTime; index = i; } } double bTime = numeric_limits::max(); bool first = false; if (index == 0) { bTime = time; } while (index > 0) { capacity = 0; bTime = numeric_limits::max(); for (long i = index - 1; i >= 0; i--) { capacity += pole[i]; double nTime = (double)capacity / (double)((index - i) * p); if (nTime < bTime) { bTime = nTime; index = i; } } } cout << setprecision(10) << time << ' ' << bTime << endl; } return 0; }