#include #include /* int N, F; int *vol; double *time; int *speed; double totalT; int min(){ int m = 0; double minimum = 1024*1024*1024*2-1; int i; for(i = 0; i < N; i++){ if((time[i] > totalT)&&(time[i] < minimum)){ minimum = time[i]; m = i; } } return m; } */ int main() { int count, speed; while (scanf("%d %d", &count, &speed) > 0) { int *capacity = (int*)malloc(count * sizeof(int)); int *rate = (int*)malloc(count * sizeof(int)); double *time = (double*)malloc(count * sizeof(double)); int i = 0; for (i = 0; i < count; i++) { scanf("%d", capacity + i); rate[i] = speed; time[i] = 0; } double this_t, prev_t; double max_t = 0; for (i = 0; i < count; i++) { if (i == 0) this_t = (double)capacity[i]/(double)rate[i]; else { this_t = (double)capacity[i]/(double)rate[i]; prev_t = time[i-1]; if (prev_t < this_t) { this_t = prev_t + ((double)capacity[i] - (double)rate[i] * prev_t) / (double)(rate[i] + rate[i-1]); rate[i] += rate[i-1]; } } time[i] = this_t; if (this_t > max_t) max_t = this_t; } printf("%g %g\n", time[count-1], max_t); } /* int i, i; int minimum; while (scanf("%d %d", &N, &F) > 0){ vol = (int*)malloc(N*sizeof(int)); time = (int*)malloc(N*sizeof(int)); speed = (int*)malloc(N*sizeof(int)); for(i = 0; i < N; i++){ scanf("%d", vol + i); speed[i] = F; time[i] = (double)((double)vol[i] / (double)speed[i]); } for(i = 0; i < N; i++){ minimum = min(); totalT += time[minimum]; j = minimum; while((j < count) && (time[j] > totalT)){ j++; } if(j > count - 1) } } */ return 0; }