Bij formule-1 wedstrijden staat er altijd een hoge paal (in het Engels pole) naast de eindstreep. Voor de start van de wedstrijd toont deze paal de startposities (welke wagen vertrekt in welke positie). Het nummer van de eerste wagen staat helemaal bovenaan (op de pole position), het nummer van de tweede wagen staat eronder, enzoverder. Tijdens de wedstrijd wordt de paal gebruikt om de huidige positie van elke wagen te tonen: (het nummer van) de leidende wagen staat dan helemaal bovenaan, gevolgd door de wagen op de tweede plaats, enzoverder.

Naast de huidige positie van elke wagen, toont de paal ook het aantal posities dat elke wagen gewonnen of verloren heeft, relatief ten opzichte van zijn startpositie. Dit wordt voorgesteld door een geheel getal $$p$$, waarbij een negatieve waarde $$-p$$ betekent dat de wagen $$p$$ posities heeft verloren sinds de start van de wedstrijd, en een positieve waarde $$p$$ betekent dat de wagen $$p$$ posities gewonnen heeft. Indien $$p=0$$ dan betekent dit dat de wagen in dezelfde positie rijdt als aan de start van de wedstrijd.

polepositie

Gevraagd wordt om, gegeven de informatie van de paal tijdens een formule-1 wedstrijd, de startposities van alle wagens te berekenen. Opgelet: de paal kan soms defect zijn, waardoor er foute informatie getoond wordt en het niet mogelijk is om een geldige startpositie voor alle wagens te berekenen. Je programma moet defecten aan de paal kunnen detecteren.

Opgave

Schrijf een functie startposities waaraan een lijst van tuples wordt doorgegeven. Elke tuple $$(w, p)$$ in de lijst beschrijft de positie van een wagen in de wedstrijd. $$w$$ stelt het nummer van de wagen voor (alle wagens in een wedstrijd hebben een verschillend nummer), en $$p$$ stelt het aantal posities voor dat deze wagen gewonnen of verloren heeft ten opzichte van de start van de wedstrijd. De wagens worden opgelijst in volgorde van hun positie tijdens de wedstrijd. De functie moet de gereconstrueerde startposities terug, als een lijst van de nummers van de wagens, van eerste naar laatste positie. Indien het niet mogelijk is om voor een of meerdere wagens een geldige startpositie te reconstrueren, moet de functie een lege lijst teruggeven.

Voorbeeld

Klik op de icoontjes naast de voorbeelden om een grafische voorstelling te zien van de positie van de wagens tijdens de wedstrijd en de stand van de pole op dat ogenblik, en de daarmee corresponderende positie van de wagens bij aanvang van de wedstrijd.

>>> startposities([(1, 0), (3, 1), (2, -1), (4, 0)]) polepositie 
[1, 2, 3, 4]
>>> startposities([(2, 2), (8, 0),(5, -2), (7, 1), (1, 1), (9, 1),(3, -3)]) polepositie 
[5, 8, 2, 3, 7, 1, 9]
>>> startposities([(22, 1), (9, 1), (13, 0), (21, -2)]) polepositie 
[]
>>> startposities([(19, 1), (9, -99), (17, 0)]) polepositie 
[]