Here is my idea -
When a car crosses a checkpoint (and checkpoint ID is greater than the previous one), save two instance variables for this car - checkpoint number and the time.
So, for example, when there are two cars which both have crossed checkpoint #7, you can tell which one is ahead by picking the car with the lowest crossing time.
To build a real-time leaderboard you can do something like this:
For Each Car ordered by (Car.checkpoint*10000 - Car.crossingTime) Descending