Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main(){
- int i = 0, j = 0, quant = 0, dist = 0;
- scanf("%d %d", &quant, &dist);
- if((quant < 1 && quant > 1000) && (dist < 1 && dist > 1000000)){
- return 0;
- }
- int endDist = dist;
- int endQ = quant;
- double upper = 1000.00;
- double down = 0;
- double *speed = (double*)calloc(endQ, sizeof(double));
- double *dista = (double*)calloc(endQ, sizeof(double));
- while(!(i >= endQ)){
- j = i;
- scanf("%lf %lf", &dista[j], &speed[i]);
- i++;
- }
- i = 0;
- j = 0;
- if(1 == endQ){
- double temp = (double)dista[0] / dist;
- double end = temp - speed[0];
- printf("%.9lf\n", end);
- free(speed);
- free(dista);
- }
- upper = upper * 2;
- //upper = 2000.00;
- down = speed[0];
- long double tm = 0;
- int k = 0;
- while(k < endQ){
- if(speed[j] < down)
- down = speed[j];
- k++;
- }
- double ddown = down * -1;
- i = 0;
- if(upper != 2000.00)
- {
- return 0;
- }
- double temp = 0;
- double mid = 0;
- while(i < 75){
- tm = 0;
- temp = upper + ddown;
- mid = temp / 2;
- j = 0;
- while((j < endQ)){
- tm = tm + ((double)dista[j]/(double)(speed[j] + mid));
- j++;
- }
- if(endDist < tm){
- ddown = mid;
- } else{
- upper = mid;
- }
- i++;
- }
- printf("%.9lf\n", mid);
- free(speed);
- free(dista);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement