'''
24-Oct-23
Programming Course - GTIAE
Lluís Vila
ETSEIB - CS Dept - UPC
'''

def progress(g1, g2, g3):
    '''
    >>> progress(-1.0, 0.0, 5.0)
    ('error', -1.0)
    >>> progress(5.0, 7.5, 9.5)
    ('positive', 8.5)
    >>> progress(5.0, 5.0, 3.0)
    ('negative', 4.3)
    '''
    if check_error(g1) or check_error (g2) or check_error(g3):
        p = 'error'
        m = -1.0
    else:
        if g1 == g2 == g3:
            p = 'constant'
        elif g1 <= g2 <= g3:
            p = 'positive'
        elif g1 >= g2 >= g3:
            p = 'negative'
        elif g1 < g2 > g3:
            p = 'peak'
        elif g1 > g2 < g3:
            p = 'valley'
 
        if p == 'negative':
            m = (g1+g2+g3) / 3.0
        else:
            m = (g1+g2+g3 - min(g1,g2,g3)) / 2.0
    return p, round(m, 1)

def check_error(n):
    return n < 0.0 or n > 10.0
