fork download
  1. #include <stdio.h>
  2. const double EPS = 1e-8;
  3. double foo(double L, double R, double (*f)(double))
  4. {
  5. while (R - L > EPS)
  6. {
  7. double m1 = (2 * L + R) / 3;
  8. double m2 = (L + 2 * R) / 3;
  9. if (f(m2) > f(m1))
  10. L = m1;
  11. else
  12. R = m2;
  13. }
  14. return L;
  15. }
  16. double func(double x)
  17. {
  18. return -x * x + 2 * x + 1;
  19. }
  20. int main(void)
  21. {
  22. double L, R;
  23. scanf("%lf%lf", &L, &R);
  24. printf("%0.3lf\n", foo(L, R, func));
  25. return 0;
  26. }
  27.  
Success #stdin #stdout 0s 9424KB
stdin
2 10
stdout
2.000