SRM 449d1 easy

あり得るすべての辺の長さの組合せを列挙して最大の面積の三角形を求める.

#coding: utf-8
import math
EPS = 0.0001
def pitagoras(x):
    a = 0
    ret = []
    while a ** 2 <= x / 2 + 1:
        r = x - a ** 2
        b = math.sqrt(r)
        b += EPS
        c = int(b)
        if c ** 2 == r:
            ret.append((a,c))
        a += 1
    return ret
class MaxTriangle:
    def calculateArea(self, A, B):
        a = pitagoras(A)
        b = pitagoras(B)
        if len(a) == 0 or len(b) == 0:
            return -1.0
        ans = 0.0
        for i,j in a:
            for k,l in b:
                ans = max(ans,max(abs(i*k+j*l),abs(i*l+j*k)))
        return ans / 2.0