'''
24-Oct-23
Programming Course - GTIAE
Lluís Vila
ETSEIB - CS Dept - UPC
'''
def clc_grade(g1, g2, g3, gf):
    ceg = clc_ceg(g1, g2, g3)
    if g1 == g2 == g3 == -1.0:
        g = 0.0
    elif gf == -1.0:
        g = ceg
    else:
        g = max(ceg, gf)
    return ceg, round(g, 1)

def clc_ceg(g1, g2, g3):
    if g1 == g2 == g3 == -1.0:
        # did not take any test
        return 0.0
    elif g1 == g2 == -1.0 or g1 == g3 == -1.0 or g2 == g3 == -1.0:
        # did not take 2 tests
        return 0.0
    else:
        return (g1 + g2 + g3 - min(g1, g2, g3)) / 2.0
