activities for a set of junior-high-school-age campers. One of his plans is the following minitriathlon

exercise: each contestant must swim 20 laps of a pool, then bike 10 miles, then run

3 miles. The plan is to send the contestants out in a staggered fashion, via the following rule:

the contestants must use the pool one at a time. In other words, first one contestant swims

the 20 laps, gets out, and starts biking. As soon as the first person is out of the pool, a second

contestant begins swimming the 20 laps; as soon as he or she is out and starts biking, a third

contestant begins swimming... and so on.)

Each contestant has a projected swimming time (the expected time it will take him or her

to complete the 20 laps), a projected biking time (the expected time it will take him or her

to complete the 10 miles of bicycling) and a projected running time (the time it will take

him or her to complete the 3 miles of running). Your friend wants to decide on a schedule

for the triathlon: an order in which to sequence the starts of the contestants. Let’s say that

the completion time of a schedule is the earliest time at which all contestants will be finished

with all three legs of the triathlon, assumning that they each spend exactly their projected

swimming, biking, and running times on the three parts. (Again, note that participants can

bike and run simultaneously, but at most one person can be in the pool at any time.) What’s

the best order for sending people out, if one wants the whole competition to be over as early

as possible? More precisely, give an efficient algorithm that produces a schedule whose completion

time is as small as possible.