#include <stdio.h>
const double EPS = 1e-8;
double foo(double L, double R, double (*f)(double))
{
while (R - L > EPS)
{
double m1 = (2 * L + R) / 3;
double m2 = (L + 2 * R) / 3;
if (f(m2) > f(m1))
L = m1;
else
R = m2;
}
return L;
}
double func(double x)
{
return -x * x + 2 * x + 1;
}
int main(void)
{
double L, R;
printf("%0.3lf\n", foo
(L
, R
, func
)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmNvbnN0IGRvdWJsZSBFUFMgPSAxZS04Owpkb3VibGUgZm9vKGRvdWJsZSBMLCBkb3VibGUgUiwgZG91YmxlICgqZikoZG91YmxlKSkKewogICAgd2hpbGUgKFIgLSBMID4gRVBTKQogICAgewogICAgICAgIGRvdWJsZSBtMSA9ICgyICogTCArIFIpIC8gMzsKICAgICAgICBkb3VibGUgbTIgPSAoTCArIDIgKiBSKSAvIDM7CiAgICAgICAgaWYgKGYobTIpID4gZihtMSkpCiAgICAgICAgICAgIEwgPSBtMTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIFIgPSBtMjsKICAgIH0KICAgIHJldHVybiBMOwp9CmRvdWJsZSBmdW5jKGRvdWJsZSB4KQp7CiAgICByZXR1cm4gLXggKiB4ICsgMiAqIHggKyAxOwp9CmludCBtYWluKHZvaWQpCnsKICAgIGRvdWJsZSBMLCBSOwogICAgc2NhbmYoIiVsZiVsZiIsICZMLCAmUik7CiAgICBwcmludGYoIiUwLjNsZlxuIiwgZm9vKEwsIFIsIGZ1bmMpKTsKICAgIHJldHVybiAwOwp9Cg==