This page is still under construction.

Parts of this page are still being built. What you see may change.

Staggering to the Finish

Time limit1sMemory limit1024 MB

Summary
Given an oval track's geometry and a race distance, compute each lane's staggered starting line coordinates so every runner covers the same distance.
Level

Medium7 of 10

Topics
Geometry, Math, Implementation, Simulation
Solved
No attempts yet

Problem

An oval track and field racing track consists of two parallel straightaway sections connected by two semicircles, depicted in Figure 1. Footraces run in the counterclockwise direction, ending at a common finish line located along the lower straightaway. For races that exceed the length of a single straightaway, starting lines must be staggered backwards, in the clockwise direction, from the finish line. The staggered starting lines must account for the curve of the semicircles and the widths of each running lane.

Figure 1: Oval track with 200200m starting lines.

Figure 2: Inset showing staggered starting line locations.

There are international standards for oval track dimensions. Unfortunately, the available area for a track doesn't always hold a standard track. Given the dimensions of the track and the length of the race, your team is to write a program to ensure equal race lengths by computing the staggered starting line positions.

The total distance of a race for any given lane is computed from the line of running. The line of running is an unmarked line to the right of the lane's inside marker (as seen from the counterclockwise direction). See Figure 2. For the innermost lane (lane 1) the line of running is usually farther from the lane marker than for the remaining lanes.

The track is mapped to an (x,y)(x, y) coordinate system with (0,0)(0, 0) at the center of the track. See Figure 1.

Input

The first line of input to your program contains seven values, NN RR SS WW FF L_1L\_1 L_2L\_2, separated by whitespace, describing the geometry of a track, where:

  • NN is the integer number of lanes. (1≤N≤91 \le N \le 9)
  • RR is the inner radius of lane 1, a real number in meters. See Figure 1. (1.0≤R≤100.01.0 \le R \le 100.0)
  • SS is the length of the straightaway, a real number in meters. See Figure 1. (1.0≤S≤200.01.0 \le S \le 200.0)
  • WW is the width of each lane, a real number in meters. See Figure 2. (0.5≤W≤3.00.5 \le W \le 3.0)
  • FF is the xx-coordinate of the finish line, measured from the centerline in Figure 1, a real value in meters. The finish line will always be in the lower (negative yy) half of the track. (∣F∣≤S/2\vert F\vert \le S / 2)
  • L_1L\_1 is the offset from the inner radius of lane 1 to the line of running for lane 1, a real number in meters. See Figure 2. (0≤L_1<W0 \le L\_1 < W)
  • L_2L\_2 is the offset from the inner radius to the lines of running for lanes 2 and higher. See Figure 2. (0≤L_2<W0 \le L\_2 < W)

The remaining lines until end-of-file specify DD, the distance of a race, one race per line, a real number in meters. (1.0≤D<410.01.0 \le D < 410.0.) There will be at most 100100 distances DD in input.

Output

Your program is to print a series of values for each race distance, separated from each other by spaces and/or newlines. Print the race distance first, followed by the (x,y)(x, y) coordinates of the staggered starting line locations in lane number order. Express all values in meters. The (x,y)(x, y) coordinate is the innermost point of a lane, NOT the line of running. Treat each lane marker (straightaway or radius) as a zero-width line. International standards require that the values be within 0.0010.001 meters of the exact answer.

Examples1

  1. Example 1

    Input
    4 36.5 84.39 1.22 40.0 0.30 0.20
    200.0
    400
    
    Expected output
    200.000 -40.0006 36.5000 -43.5119 37.6970 -47.3108 38.6025 -51.0664 39.1679
    400.000 40.0012 -36.5000 46.9998 -37.4127 54.4292 -36.9682 61.4438 -35.2464