At the end of this problem you will find an incomplete program and your job is to finish it. In particular, there are two functions which have to be implemented. The following explanation gives you the details about data types and the job of those two functions.
The program will work with a data type called Cyclist, which represents a cyclist participating in a race, and includes the cyclist’s name, his current position and his current velocity. To make it simple, we will use integer values instead of real numbers.
struct Cyclist { string name; int position; int velocity; };
The program also works with another data type ListCyclists, which represents a list of cyclists:
typedef vector<Cyclist> ListCyclists;
You’ll have to implement a function which receives a list of cyclists and an elapsed time, and it has to update the position of all cyclists adding their current velocity multiplied by the elapsed time. If you want to think in terms of units, you could say that position is in meters, time in seconds, and velocity in meters per second.
void progressCyclists(int time, ListCyclists &listcyclists);
Additionally, you will have to implement a function which receives two cyclists and returns true if the first is less than the second, using the following criteria. A cyclist is less than another if its position is strictly less than the other’s position, or if he has the same position as the other and his velocity is less than the other’s velocity, or he has the same position and velocity as the other but his name is less than the name of the other in lexicographical order.
bool smallerCyclist(Cyclist c1, Cyclist c2);
This function is used in another part of the program to sort the list of cyclists.
Complete, then, the following code to solve the exercise:
#include <iostream> #include <string> #include <vector> #include <algorithm> // Here you can add more includes if you wish. // ... using namespace std; struct Cyclist { string name; int position; int velocity; }; typedef vector<Cyclist> ListCyclists; // Auxiliary functions (you can add more functions if you wish) // Pre: // Post: Prints all cyclists from first to last, one per line, and with the format: // name position velocity void printCyclists(const ListCyclists &listcyclists) { for (int i = 0; i < int(listcyclists.size()); i++) { const Cyclist &c = listcyclists[i]; cout << c.name << " " << c.position << " " << c.velocity << endl; } } // Pre: variable 'time' is strictly positive and represents a time elapsed. // Post: All positions of cyclists in listcyclists have been updated // according to the given time elapsed and their corresponding velocity. void progressCyclists(int time, ListCyclists &listcyclists) { // Implement this function. //... } // Pre: c1, c2 represent correct cyclists. // Post: Returns true iff one of the following conditions holds: // - position of c1 is strictly smaller than position of c2. // - c1 and c2 have same position but velocity of c1 is strictly smaller than velocity of c2. // - c1 and c2 coincide in position and velocity, but c1 has smaller name than c2. bool smallerCyclist(Cyclist c1, Cyclist c2) { // Implement this function. //... } int main() { int n; cin >> n; ListCyclists listcyclists(n); for (int i = 0; i < n; i++) { Cyclist &c = listcyclists[i]; cin >> c.name; c.position = 0; c.velocity = 0; } string command; while (cin >> command) { if (command == "UPDATEVELOCITY") { int i, velocity; cin >> i >> velocity; listcyclists[i].velocity = velocity; } else if (command == "SORT") { sort(listcyclists.begin(), listcyclists.end(), smallerCyclist); } else if (command == "PRINT") { cout << "Current list cyclists:" << endl; printCyclists(listcyclists); cout << endl; } else if (command == "PROGRESSCYCLISTS") { int time; cin >> time; progressCyclists(time, listcyclists); } } }
Input
The input consists of a list of commands to update the speed of a cyclist, to sort all cyclists, and to move their positions. You don’t have to worry too much about the input since the main function already takes care of reading commands and calling the appropriate functions.
Output
The output shows the results of applying the commands. You don’t have to worry too much about the output since the main function already takes care of producing it by calling the appropriate functions.
Input
6 indurain lejarreta amstrong delgado vingegaard hinault UPDATEVELOCITY 3 6 PROGRESSCYCLISTS 6 UPDATEVELOCITY 0 10 PRINT UPDATEVELOCITY 1 1 SORT PROGRESSCYCLISTS 7 PROGRESSCYCLISTS 7 UPDATEVELOCITY 4 2 UPDATEVELOCITY 3 10 UPDATEVELOCITY 2 3 UPDATEVELOCITY 1 6 PROGRESSCYCLISTS 3 PRINT UPDATEVELOCITY 5 8 PRINT UPDATEVELOCITY 1 3 UPDATEVELOCITY 3 2 UPDATEVELOCITY 2 8 UPDATEVELOCITY 2 6 UPDATEVELOCITY 5 7 PRINT UPDATEVELOCITY 2 4 UPDATEVELOCITY 2 7 UPDATEVELOCITY 3 6 UPDATEVELOCITY 3 7 UPDATEVELOCITY 4 10 UPDATEVELOCITY 5 5 UPDATEVELOCITY 0 6 PRINT UPDATEVELOCITY 2 5 UPDATEVELOCITY 2 8 PROGRESSCYCLISTS 7 UPDATEVELOCITY 2 5 UPDATEVELOCITY 5 5 PRINT PROGRESSCYCLISTS 1 UPDATEVELOCITY 0 10 UPDATEVELOCITY 4 7 UPDATEVELOCITY 5 6 UPDATEVELOCITY 2 9 UPDATEVELOCITY 3 8 PRINT UPDATEVELOCITY 0 3 PRINT SORT PRINT UPDATEVELOCITY 1 6 PROGRESSCYCLISTS 5 PROGRESSCYCLISTS 1 UPDATEVELOCITY 3 8 UPDATEVELOCITY 5 2 UPDATEVELOCITY 3 8 PRINT UPDATEVELOCITY 5 4 PROGRESSCYCLISTS 6 PRINT UPDATEVELOCITY 5 5 UPDATEVELOCITY 3 3 UPDATEVELOCITY 3 10 PRINT UPDATEVELOCITY 5 1 PRINT PROGRESSCYCLISTS 4 UPDATEVELOCITY 1 7 UPDATEVELOCITY 1 6 UPDATEVELOCITY 4 5 UPDATEVELOCITY 1 1 PRINT UPDATEVELOCITY 4 5 UPDATEVELOCITY 5 7 UPDATEVELOCITY 3 8 UPDATEVELOCITY 3 7 PRINT UPDATEVELOCITY 5 9 PROGRESSCYCLISTS 8 UPDATEVELOCITY 1 9 SORT UPDATEVELOCITY 1 6 SORT UPDATEVELOCITY 2 4 UPDATEVELOCITY 0 10 PRINT UPDATEVELOCITY 1 4 UPDATEVELOCITY 2 7 UPDATEVELOCITY 4 9 UPDATEVELOCITY 0 10 UPDATEVELOCITY 5 7 PRINT PROGRESSCYCLISTS 4 UPDATEVELOCITY 5 3 UPDATEVELOCITY 4 1 UPDATEVELOCITY 5 5 UPDATEVELOCITY 3 3 PROGRESSCYCLISTS 5 SORT PRINT UPDATEVELOCITY 4 9 PROGRESSCYCLISTS 3 UPDATEVELOCITY 5 4
Output
Current list cyclists: indurain 0 10 lejarreta 0 0 amstrong 0 0 delgado 36 6 vingegaard 0 0 hinault 0 0 Current list cyclists: amstrong 0 0 hinault 18 6 vingegaard 9 3 lejarreta 44 10 indurain 146 2 delgado 138 6 Current list cyclists: amstrong 0 0 hinault 18 6 vingegaard 9 3 lejarreta 44 10 indurain 146 2 delgado 138 8 Current list cyclists: amstrong 0 0 hinault 18 3 vingegaard 9 6 lejarreta 44 2 indurain 146 2 delgado 138 7 Current list cyclists: amstrong 0 6 hinault 18 3 vingegaard 9 7 lejarreta 44 7 indurain 146 10 delgado 138 5 Current list cyclists: amstrong 42 6 hinault 39 3 vingegaard 65 5 lejarreta 93 7 indurain 216 10 delgado 173 5 Current list cyclists: amstrong 48 10 hinault 42 3 vingegaard 70 9 lejarreta 100 8 indurain 226 7 delgado 178 6 Current list cyclists: amstrong 48 3 hinault 42 3 vingegaard 70 9 lejarreta 100 8 indurain 226 7 delgado 178 6 Current list cyclists: hinault 42 3 amstrong 48 3 vingegaard 70 9 lejarreta 100 8 delgado 178 6 indurain 226 7 Current list cyclists: hinault 60 3 amstrong 84 6 vingegaard 124 9 lejarreta 148 8 delgado 214 6 indurain 268 2 Current list cyclists: hinault 78 3 amstrong 120 6 vingegaard 178 9 lejarreta 196 8 delgado 250 6 indurain 292 4 Current list cyclists: hinault 78 3 amstrong 120 6 vingegaard 178 9 lejarreta 196 10 delgado 250 6 indurain 292 5 Current list cyclists: hinault 78 3 amstrong 120 6 vingegaard 178 9 lejarreta 196 10 delgado 250 6 indurain 292 1 Current list cyclists: hinault 90 3 amstrong 144 1 vingegaard 214 9 lejarreta 236 10 delgado 274 5 indurain 296 1 Current list cyclists: hinault 90 3 amstrong 144 1 vingegaard 214 9 lejarreta 236 7 delgado 274 5 indurain 296 7 Current list cyclists: hinault 114 10 amstrong 152 6 vingegaard 286 4 lejarreta 292 7 delgado 314 5 indurain 368 9 Current list cyclists: hinault 114 10 amstrong 152 4 vingegaard 286 7 lejarreta 292 7 delgado 314 9 indurain 368 7 Current list cyclists: amstrong 188 4 hinault 204 10 lejarreta 335 3 vingegaard 349 7 delgado 355 1 indurain 421 5
Input
18 indurain lejarreta amstrong delgado vingegaard hinault merckx froome anquetil lemond bernal nibali wiggins evans contador sastre pantani ullrich UPDATEVELOCITY 15 0 UPDATEVELOCITY 7 0 UPDATEVELOCITY 9 2 UPDATEVELOCITY 10 2 UPDATEVELOCITY 15 2 UPDATEVELOCITY 3 0 UPDATEVELOCITY 2 0 PRINT UPDATEVELOCITY 10 0 UPDATEVELOCITY 13 2 UPDATEVELOCITY 16 0 UPDATEVELOCITY 11 1 UPDATEVELOCITY 1 1 UPDATEVELOCITY 8 0 PROGRESSCYCLISTS 2 UPDATEVELOCITY 2 1 PROGRESSCYCLISTS 3 UPDATEVELOCITY 15 2 UPDATEVELOCITY 10 2 SORT UPDATEVELOCITY 17 0 PRINT UPDATEVELOCITY 15 0 PROGRESSCYCLISTS 3 PRINT UPDATEVELOCITY 2 2 UPDATEVELOCITY 14 2 UPDATEVELOCITY 7 0 UPDATEVELOCITY 7 0 UPDATEVELOCITY 17 1 UPDATEVELOCITY 7 1 UPDATEVELOCITY 6 2 UPDATEVELOCITY 3 2 UPDATEVELOCITY 0 0 PROGRESSCYCLISTS 3 UPDATEVELOCITY 4 1 UPDATEVELOCITY 9 2 PRINT UPDATEVELOCITY 0 2 PRINT UPDATEVELOCITY 10 2 UPDATEVELOCITY 9 1 PROGRESSCYCLISTS 2 PRINT SORT UPDATEVELOCITY 8 0 UPDATEVELOCITY 2 2 UPDATEVELOCITY 6 0 UPDATEVELOCITY 7 1 UPDATEVELOCITY 8 0 UPDATEVELOCITY 3 1 UPDATEVELOCITY 6 0 UPDATEVELOCITY 16 1 PRINT UPDATEVELOCITY 11 1 PROGRESSCYCLISTS 2 UPDATEVELOCITY 14 1 UPDATEVELOCITY 14 2 UPDATEVELOCITY 3 2 UPDATEVELOCITY 8 1 PRINT PROGRESSCYCLISTS 2 UPDATEVELOCITY 17 0 UPDATEVELOCITY 3 1 SORT UPDATEVELOCITY 6 2 PRINT UPDATEVELOCITY 5 2 PRINT UPDATEVELOCITY 6 1 PROGRESSCYCLISTS 3 UPDATEVELOCITY 4 1 UPDATEVELOCITY 4 2 SORT UPDATEVELOCITY 13 0 UPDATEVELOCITY 13 1 UPDATEVELOCITY 16 1 UPDATEVELOCITY 6 1 UPDATEVELOCITY 0 0 UPDATEVELOCITY 5 1 UPDATEVELOCITY 12 1 UPDATEVELOCITY 11 0 UPDATEVELOCITY 14 0 UPDATEVELOCITY 16 0 UPDATEVELOCITY 2 2 UPDATEVELOCITY 17 1 UPDATEVELOCITY 12 2 UPDATEVELOCITY 9 0 UPDATEVELOCITY 12 0 PROGRESSCYCLISTS 2 UPDATEVELOCITY 17 2 PRINT UPDATEVELOCITY 14 1 UPDATEVELOCITY 9 0 UPDATEVELOCITY 17 1 PROGRESSCYCLISTS 3 PRINT UPDATEVELOCITY 13 1 UPDATEVELOCITY 15 2 UPDATEVELOCITY 14 0 UPDATEVELOCITY 8 1 UPDATEVELOCITY 3 2 PROGRESSCYCLISTS 3 UPDATEVELOCITY 3 1 UPDATEVELOCITY 1 1 UPDATEVELOCITY 11 1 UPDATEVELOCITY 1 1 PRINT UPDATEVELOCITY 14 1 UPDATEVELOCITY 11 0 UPDATEVELOCITY 10 0 UPDATEVELOCITY 3 2 UPDATEVELOCITY 5 1 UPDATEVELOCITY 17 1 UPDATEVELOCITY 0 2 UPDATEVELOCITY 1 1 PROGRESSCYCLISTS 2 UPDATEVELOCITY 14 1 UPDATEVELOCITY 9 1 UPDATEVELOCITY 0 2 UPDATEVELOCITY 6 1 UPDATEVELOCITY 6 1 UPDATEVELOCITY 12 1 PRINT UPDATEVELOCITY 1 0 UPDATEVELOCITY 13 1 UPDATEVELOCITY 10 0 UPDATEVELOCITY 16 2 UPDATEVELOCITY 10 0 PRINT UPDATEVELOCITY 8 2 UPDATEVELOCITY 13 1 PROGRESSCYCLISTS 1 SORT PRINT UPDATEVELOCITY 10 1 UPDATEVELOCITY 14 0 UPDATEVELOCITY 17 1 PROGRESSCYCLISTS 1 UPDATEVELOCITY 2 2 PRINT UPDATEVELOCITY 1 0 PRINT UPDATEVELOCITY 15 2 PRINT PROGRESSCYCLISTS 3 UPDATEVELOCITY 14 2 PRINT UPDATEVELOCITY 9 0 UPDATEVELOCITY 13 0 UPDATEVELOCITY 4 0 UPDATEVELOCITY 6 1 UPDATEVELOCITY 6 1 SORT UPDATEVELOCITY 0 1 PRINT PROGRESSCYCLISTS 2 PROGRESSCYCLISTS 1 UPDATEVELOCITY 7 2 UPDATEVELOCITY 3 2 UPDATEVELOCITY 6 2 UPDATEVELOCITY 3 0 PROGRESSCYCLISTS 3 UPDATEVELOCITY 13 1 UPDATEVELOCITY 12 2 UPDATEVELOCITY 14 2 UPDATEVELOCITY 14 0 UPDATEVELOCITY 3 2 PRINT UPDATEVELOCITY 11 1 UPDATEVELOCITY 12 0 UPDATEVELOCITY 0 2 PRINT UPDATEVELOCITY 14 0 UPDATEVELOCITY 10 0 UPDATEVELOCITY 4 0 PROGRESSCYCLISTS 2 UPDATEVELOCITY 7 0 UPDATEVELOCITY 6 1 UPDATEVELOCITY 10 2 UPDATEVELOCITY 4 0 UPDATEVELOCITY 16 1 UPDATEVELOCITY 15 1 UPDATEVELOCITY 16 2 UPDATEVELOCITY 14 0 UPDATEVELOCITY 12 0 UPDATEVELOCITY 6 2 UPDATEVELOCITY 10 1 UPDATEVELOCITY 6 1 UPDATEVELOCITY 8 1 UPDATEVELOCITY 13 2 UPDATEVELOCITY 0 1 UPDATEVELOCITY 12 1 UPDATEVELOCITY 15 1 UPDATEVELOCITY 12 1 PROGRESSCYCLISTS 1 PROGRESSCYCLISTS 1 PROGRESSCYCLISTS 3 UPDATEVELOCITY 16 1 UPDATEVELOCITY 17 2
Output
Current list cyclists: indurain 0 0 lejarreta 0 0 amstrong 0 0 delgado 0 0 vingegaard 0 0 hinault 0 0 merckx 0 0 froome 0 0 anquetil 0 0 lemond 0 2 bernal 0 2 nibali 0 0 wiggins 0 0 evans 0 0 contador 0 0 sastre 0 2 pantani 0 0 ullrich 0 0 Current list cyclists: anquetil 0 0 contador 0 0 delgado 0 0 froome 0 0 hinault 0 0 indurain 0 0 merckx 0 0 pantani 0 0 ullrich 0 0 vingegaard 0 0 wiggins 0 0 bernal 0 2 amstrong 3 1 lejarreta 5 1 nibali 5 1 evans 10 2 lemond 10 2 sastre 10 0 Current list cyclists: anquetil 0 0 contador 0 0 delgado 0 0 froome 0 0 hinault 0 0 indurain 0 0 merckx 0 0 pantani 0 0 ullrich 0 0 vingegaard 0 0 wiggins 0 0 bernal 6 2 amstrong 6 1 lejarreta 8 1 nibali 8 1 evans 10 0 lemond 16 2 sastre 10 0 Current list cyclists: anquetil 0 0 contador 0 0 delgado 6 2 froome 6 2 hinault 0 1 indurain 0 0 merckx 6 2 pantani 3 1 ullrich 0 0 vingegaard 0 2 wiggins 0 0 bernal 12 2 amstrong 9 1 lejarreta 11 1 nibali 14 2 evans 10 0 lemond 22 2 sastre 13 1 Current list cyclists: anquetil 0 2 contador 0 0 delgado 6 2 froome 6 2 hinault 0 1 indurain 0 0 merckx 6 2 pantani 3 1 ullrich 0 0 vingegaard 0 2 wiggins 0 0 bernal 12 2 amstrong 9 1 lejarreta 11 1 nibali 14 2 evans 10 0 lemond 22 2 sastre 13 1 Current list cyclists: anquetil 4 2 contador 0 0 delgado 10 2 froome 10 2 hinault 2 1 indurain 0 0 merckx 10 2 pantani 5 1 ullrich 0 0 vingegaard 2 1 wiggins 4 2 bernal 16 2 amstrong 11 1 lejarreta 13 1 nibali 18 2 evans 10 0 lemond 26 2 sastre 15 1 Current list cyclists: contador 0 0 indurain 0 0 ullrich 0 2 hinault 2 1 vingegaard 2 1 anquetil 4 2 wiggins 4 0 pantani 5 1 evans 10 0 delgado 10 2 froome 10 2 merckx 10 2 amstrong 11 1 lejarreta 13 1 sastre 15 1 bernal 16 2 nibali 18 1 lemond 26 2 Current list cyclists: contador 0 0 indurain 0 0 ullrich 4 2 hinault 4 2 vingegaard 4 1 anquetil 8 2 wiggins 4 0 pantani 7 1 evans 10 1 delgado 14 2 froome 14 2 merckx 12 1 amstrong 13 1 lejarreta 15 1 sastre 17 2 bernal 20 2 nibali 20 1 lemond 30 2 Current list cyclists: contador 0 0 indurain 0 0 wiggins 4 0 vingegaard 6 1 hinault 8 1 ullrich 8 2 pantani 9 2 evans 12 1 anquetil 12 2 merckx 14 1 amstrong 15 1 lejarreta 17 1 delgado 18 2 froome 18 2 sastre 21 2 nibali 22 1 bernal 24 2 lemond 34 0 Current list cyclists: contador 0 0 indurain 0 0 wiggins 4 0 vingegaard 6 1 hinault 8 1 ullrich 8 2 pantani 9 2 evans 12 1 anquetil 12 2 merckx 14 1 amstrong 15 1 lejarreta 17 1 delgado 18 2 froome 18 2 sastre 21 2 nibali 22 1 bernal 24 2 lemond 34 0 Current list cyclists: contador 0 0 indurain 0 0 wiggins 8 2 vingegaard 11 1 hinault 15 2 pantani 14 1 ullrich 16 1 evans 17 1 merckx 19 1 amstrong 18 0 anquetil 22 2 lejarreta 20 0 delgado 24 0 froome 26 1 nibali 25 0 sastre 31 2 bernal 30 0 lemond 36 2 Current list cyclists: contador 0 0 indurain 0 0 wiggins 14 2 vingegaard 14 1 hinault 21 2 pantani 17 1 ullrich 19 1 evans 20 1 merckx 22 1 amstrong 18 0 anquetil 28 2 lejarreta 20 0 delgado 24 0 froome 29 1 nibali 28 1 sastre 37 2 bernal 30 0 lemond 39 1 Current list cyclists: contador 0 0 indurain 0 1 wiggins 20 2 vingegaard 20 1 hinault 27 2 pantani 20 1 ullrich 22 1 evans 23 1 merckx 25 1 amstrong 18 0 anquetil 34 2 lejarreta 20 1 delgado 24 0 froome 32 1 nibali 28 0 sastre 43 2 bernal 30 0 lemond 42 1 Current list cyclists: contador 4 2 indurain 2 1 wiggins 24 2 vingegaard 24 2 hinault 31 2 pantani 22 1 ullrich 24 1 evans 25 1 merckx 27 1 amstrong 18 1 anquetil 34 0 lejarreta 20 0 delgado 24 1 froome 34 1 nibali 30 1 sastre 47 2 bernal 30 0 lemond 44 1 Current list cyclists: contador 4 2 indurain 2 0 wiggins 24 2 vingegaard 24 2 hinault 31 2 pantani 22 1 ullrich 24 1 evans 25 1 merckx 27 1 amstrong 18 1 anquetil 34 0 lejarreta 20 0 delgado 24 1 froome 34 1 nibali 30 1 sastre 47 2 bernal 30 2 lemond 44 1 Current list cyclists: indurain 2 0 contador 6 2 amstrong 19 1 lejarreta 20 0 pantani 23 1 delgado 25 1 ullrich 25 1 evans 26 1 vingegaard 26 2 wiggins 26 2 merckx 29 2 nibali 31 1 bernal 32 2 hinault 33 2 anquetil 34 0 froome 35 1 lemond 45 1 sastre 49 2 Current list cyclists: indurain 2 0 contador 8 2 amstrong 20 2 lejarreta 20 0 pantani 24 1 delgado 26 1 ullrich 26 1 evans 27 1 vingegaard 28 2 wiggins 28 2 merckx 30 1 nibali 32 1 bernal 34 2 hinault 35 2 anquetil 34 0 froome 36 1 lemond 46 1 sastre 50 1 Current list cyclists: indurain 2 0 contador 8 0 amstrong 20 2 lejarreta 20 0 pantani 24 1 delgado 26 1 ullrich 26 1 evans 27 1 vingegaard 28 2 wiggins 28 2 merckx 30 1 nibali 32 1 bernal 34 2 hinault 35 2 anquetil 34 0 froome 36 1 lemond 46 1 sastre 50 1 Current list cyclists: indurain 2 0 contador 8 0 amstrong 20 2 lejarreta 20 0 pantani 24 1 delgado 26 1 ullrich 26 1 evans 27 1 vingegaard 28 2 wiggins 28 2 merckx 30 1 nibali 32 1 bernal 34 2 hinault 35 2 anquetil 34 0 froome 36 2 lemond 46 1 sastre 50 1 Current list cyclists: indurain 2 0 contador 8 0 amstrong 26 2 lejarreta 20 0 pantani 27 1 delgado 29 1 ullrich 29 1 evans 30 1 vingegaard 34 2 wiggins 34 2 merckx 33 1 nibali 35 1 bernal 40 2 hinault 41 2 anquetil 34 2 froome 42 2 lemond 49 1 sastre 53 1 Current list cyclists: indurain 2 1 contador 8 0 lejarreta 20 0 amstrong 26 2 pantani 27 0 delgado 29 1 ullrich 29 1 evans 30 1 merckx 33 1 wiggins 34 0 anquetil 34 2 vingegaard 34 2 nibali 35 1 bernal 40 2 hinault 41 0 froome 42 2 lemond 49 1 sastre 53 1 Current list cyclists: indurain 8 1 contador 8 0 lejarreta 20 0 amstrong 32 2 pantani 27 0 delgado 35 1 ullrich 38 2 evans 39 2 merckx 39 1 wiggins 34 0 anquetil 46 2 vingegaard 46 2 nibali 41 2 bernal 52 1 hinault 41 0 froome 54 2 lemond 55 1 sastre 59 1 Current list cyclists: indurain 8 2 contador 8 0 lejarreta 20 0 amstrong 32 2 pantani 27 0 delgado 35 1 ullrich 38 2 evans 39 2 merckx 39 1 wiggins 34 0 anquetil 46 2 vingegaard 46 1 nibali 41 0 bernal 52 1 hinault 41 0 froome 54 2 lemond 55 1 sastre 59 1