单峰函数,使用三分

#include<bits/stdc++.h>
using namespace std;
int n;
double l,r,ee=1e-9;
double arr[15]={0};
double f(double x);
double power(double x,int c);
int main()
{
    cin>>n>>l>>r;
    for(int i=0;i<n+1;i++)
    {
        cin>>arr[i];
    }
    while(r-l>ee)
    {
        double k=(r-l)/3.0;
        double mid1=l+k;
        double mid2=r-k;
        if(f(mid1)>f(mid2))
        {
            r=mid2;
        }
        else
        {
            l=mid1;
        }
    }
    printf("%.5f",l);
}
double power(double x,int c)
{
    double ans=x;
    for(int i=0;i<c-1;i++)
    {
        ans=ans*x;
    }
    if(c==0)
    {
        return 1;
    }
    return ans;
}
double f(double x)
{
    double ans=0;
    for(int i=n;i>=0;i--)
    {
        ans+=arr[n-i]*power(x,i);
    }
    return ans;
}