Drop links or images here to add them to the editor.

Gevraagd

Je hebt een processor die een bepaalde set aan taken moet uitvoeren. De processor kan slechts één taak tegelijk uitvoeren, en je wilt zo veel mogelijk taken uitvoeren voor hun gegeven deadline. Schrijf een functie processor(taken) die dit op een gretige manier berekent.

Input

Een lijst met taken die moeten uitgevoerd worden. Elke taak is een tupel (duur, deadline), waarbij duur het aantal tijdseenheden is dat de taak nodig heeft om uitgevoerd te worden, en deadline het tijdstip is waarop de taak klaar moet zijn.

Output

Het aantal taken dat uitgevoerd kan worden voor hun deadline.

Voorbeeld

>>> processor([(2, 2), (1, 2)])
1

>>> processor([(2, 3), (1, 2)])
2

>>> processor([(3, 2)])
0

Tip

Je kan een lijst van tupels sorteren op hun eerste of tweede element als volgt:


taken.sort(key=lambda tup: tup[0])  # Sorteert op duur
taken.sort(key=lambda tup: tup[1])  # Sorteert op deadline
  

Je kan dit ook combineren met de reverse parameter om in omgekeerde volgorde te sorteren:


taken.sort(key=lambda tup: tup[0], reverse=True)  # Sorteert op duur van lang naar kort
taken.sort(key=lambda tup: tup[1], reverse=True)  # Sorteert op deadline van laat naar vroeg