python3 <<'PY' import math a=0.25; b=1.0/12 def Aub(y1,y2): al=2*a+2*b-y1-y2 return math.sqrt(al)*(a+b+math.sqrt(max(0,b*(b-y1)))+math.sqrt(max(0,a*(a-y2)))) def BC(y1,y2): best=-1; by=None for j in range(201): y3=a*j/200 beta=a+b-y3; B=math.sqrt(beta)*(b+math.sqrt(max(0,a*(a-y3)))) gam=y1+y2+y3; C=math.sqrt(gam)*(math.sqrt(max(0,b*y1))+math.sqrt(max(0,a*y2))+math.sqrt(max(0,a*y3))) if B+C>best: best=B+C; by=y3 return best,by best=-1; arg=None for i in range(51): y1=b*i/50 for j in range(51): y2=a*j/50 u=Aub(y1,y2) bc,by=BC(y1,y2) t=u+bc if t>best: best=t; arg=(y1,y2,u,bc,by) print("bestUB",best,arg,"cost",1-best) PY