#include #include using namespace std; bool simulation(vector& input, long long f, double mid) { double overflow = 0; for (long long cap : input) { double toFill = cap - overflow; if (toFill <= 0) { overflow = -1*toFill + mid*f; continue; } double usedTime = toFill/f; if (usedTime > mid) return false; else overflow = (mid-usedTime)*f; } return true; } bool simulation2(vector& input, long long f, double mid) { double overflow = 0; for (long long cap : input) { double toFill = cap - overflow; if (toFill <= 0) { overflow = -1*toFill + mid*f; continue; } double usedTime = toFill/f; if (usedTime > mid) overflow = 0; else overflow = (mid-usedTime)*f; } return overflow > 0; } int main() { long long n, f; while (cin>>n>>f) { vector input(n); for (long long i=0; i>input[i]; double top = 10000000000; double bot = 0; double eps = 1.0/10000000; while (bot + eps < top) { double mid = (top+bot)/2; if (simulation(input, f, mid)) top = mid; else bot = mid; } double total = top; top = 1000000000; bot = 0; while (bot + eps < top) { double mid = (top+bot)/2; if (simulation2(input, f, mid)) top = mid; else bot = mid; } cout<