#include #include using namespace std; int main(int argc, char** argv) { ios::sync_with_stdio(false); int N; double speed; int p; cout << fixed << setprecision(32); while(cin >> N >> speed) { vector naslednik(N, 0), predchudce(N, 0); vector nextEvent(N), speeds(N); vector visited(N, false); set< pair > pq; for(int i = 0; i < N; ++i) { cin >> p; pq.insert(pair(p / speed, i)); nextEvent[i] = p / speed; speeds[i] = speed; naslednik[i] = i+1; predchudce[i] = i-1; } naslednik[N-1] = N; predchudce[0] = -1; double ans2; double time = 0; while(!pq.empty()) { int u = pq.begin()->second; double v = pq.begin()->first; pq.erase(pq.begin()); if (visited[u]) continue; visited[u] = true; time = v; if (u == N-1) ans2 = time; else { if (predchudce[u] != -1) { naslednik[predchudce[u]]=naslednik[u]; predchudce[naslednik[u]]=predchudce[u]; } if (naslednik[u] != N) { double next = time + ((nextEvent[naslednik[u]] - time)*speeds[naslednik[u]]) / (speeds[u] + speeds[naslednik[u]]); speeds[naslednik[u]] += speeds[u]; nextEvent[naslednik[u]] = next; pq.insert(pair(next, naslednik[u])); } } // cout << "Jezero " << u << endl; // cout << "Predchudce" << endl; // for(int i = 0; i < N; ++i) { // cout << predchudce[i] << " "; // } cout << endl; // cout << "Naslednik" << endl; // for(int i = 0; i < N; ++i) { // cout << naslednik[i] << " "; // } cout << endl; } cout << ans2 << " " << time << endl; } return 0; }