def suma_temps(h1, m1, h2, m2):
    mt = m1 + m2
    ht = h1 + h2 + mt//60
    mt = mt%60
    return ht, mt

def resta_temps(h1, m1, h2, m2):
    if m1 < m2:
        h1 = h1 - 1
        m1 = m1 + 60
    return h1-h2, m1-m2

def control_1 (nomf, dni_donat):
    ht, mt = 0, 0
    with open (nomf, 'r') as f:
        l1 = f.readline()
        l2 = f.readline()
        for linia in f:
            linia = linia.strip().split(', ')
            dni, nom, temps, accio = linia
            if dni == dni_donat:
                h, m = temps.split(':')
                if accio == 'E':
                    he, me = int(h), int(m)
                else:
                    hs, ms = int(h), int(m)
                    hp, mp = resta_temps(hs, ms, he, me)
                    ht, mt = suma_temps(ht, mt, hp, mp)
    return ht, mt

def control_2 (nomf, dni_donat):
    d = {}
    with open (nomf, 'r') as f:
        l1 = f.readline()
        l2 = f.readline()
        for linia in f:
            linia = linia.strip().split(', ')
            dni, nom, temps, accio = linia
            if dni not in d:
                h, m = temps.split(':')
                d[dni] = int(h)*60 + int(m)
        lt = sorted (d.items(), key = lambda x: (x[1], x[0]))
    return dni_donat not in d or dni_donat == lt[-1][0]

