![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <algorithm> 5 using namespace std; 6 const double eps=1e-9; 7 8 double getarea(double a,double b,double c) 9 { 10 double p=(a+b+c)/2.0; 11 return (c*c/4+sqrt(p*(p-a)*(p-b)*(p-c))); 12 } 13 14 int main() 15 { 16 double x,y; 17 scanf("%lf%lf",&x,&y); 18 double l=x+y,r=sqrt(x*x+y*y),s1; 19 while(fabs(r-l)>eps) 20 { 21 double mid1=(r+l)/2; 22 double mid2=(mid1+l)/2; 23 s1=getarea(x,y,mid1); 24 double s2=getarea(x,y,mid2); 25 if(s1>s2) 26 l=mid2; 27 else 28 r=mid1; 29 } 30 printf("%.9lf\n",s1); 31 return 0; 32 }