def supera_soroll(d,dmaxims):
    for nivell, maxim in dmaxims.items():
        if d[nivell]>maxim:
            return True
    return False

def avalua_caixa(d,dmaxims):
    punts = 0
    unitats = sum(d.values())
    if unitats>=200:
        punts = punts + 1
    if d['baix']<2 or d['mig']<2:
        punts = punts + 2
    if supera_soroll(d,dmaxims):
        punts = punts + 3
    return punts

def calcula_soroll(lcaixa,cataleg,dmaxims):
    d = {}
    for elem in lcaixa:
        nom, unitats = elem
        soroll = cataleg[nom]
        if soroll not in d:
            d[soroll] = unitats
        else:
            d[soroll] = d[soroll] + unitats
    punts = avalua_caixa(d,dmaxims)
    return punts
        
