CCC '20 S1 - Surmising a Sprinter's Speed

View as PDF

Submit solution

Points: 5 (partial)
Time limit: 1.0s
Memory limit: 512M

Problem type
Canadian Computing Competition: 2020 Stage 1, Senior #1

Trick E. Dingo is trying, as usual, to catch his nemesis the Street Sprinter. His past attempts using magnets, traps and explosives have failed miserably, so he's catching his breath to gather observational data and learn more about how fast Street Sprinter is.

Trick E. Dingo and Street Sprinter both inhabit a single straight west-east road with a particularly famous rock on it known affectionately as The Origin. Positions on this straight road are measured numerically according to the distance from The Origin, using negative numbers for positions west of The Origin and positive numbers for positions east of The Origin.

The observations by Trick E. Dingo each contain two numbers: a time, and the value of Street Sprinter's position on the road at that time. Given this information, what speed must Street Sprinter be capable of?

Input Specification

The first line contains a number 2 \le N \le 100\,000, the number of observations that follow. The next N lines each contain an integer 0 \le T \le 1\,000\,000\,000 indicating the time, in seconds, of when a measurement was made, and an integer -1\,000\,000\,000 \le X \le 1\,000\,000\,000 indicating the position, in metres, of the Street Sprinter at that time. No two lines will have the same value of T.

For 7 of the 15 available marks, N \le 1\,000.

Output Specification

Output a single number X, such that we can conclude that Street Sprinter's speed was at least X metres/second at some point in time, and such that X is as large as possible. If the correct answer is C, the grader will view X as correct if \frac{|X-C|}{\max(1, C)} \le 10^{-5}.

Sample Input 1

0 100
20 50
10 120

Output for Sample Input 1


Explanation of Output for Sample Input 1

Since the Street Sprinter ran from position 100 to position 120 between time 0 and time 10, we know its speed must have been at least 2 at some point in time: if it was always less than 2, then the distance of 20 could not be covered in 10 seconds. Likewise, the speed must have been at least 7 in order to travel between position 120 and 50 in 10 seconds.

Sample Input 2

20 -5
0 -17
10 31
5 -3
30 11

Output for Sample Input 2



  • 6
    maxcruickshanks  commented on July 17, 2021, 12:28 a.m.

    The checker has been updated to heed the constraints described in the problem.

  • 6
    qiao_yun20060930  commented on May 2, 2021, 6:01 p.m. edited
    cout << fixed << setprecision() << NAME

  • -32
    wleung_bvg  commented on April 20, 2020, 8:04 p.m. edit 2

    This comment is hidden due to too much negative feedback. Show it anyway.

  • 5
    Evanhyd  commented on April 1, 2020, 11:39 p.m.

    There are no restrictions on the number of decimal points; More precise is better

    • 10
      TimothyW553  commented on April 2, 2020, 3:13 a.m. edited

      I only printed to 1 decimal place during CCC 🐒

      • 9
        Plasmatic  commented on April 3, 2020, 4:22 a.m.

        orz timothy cco chad passing s1 with only 1 decimal place

  • -10
    RyanLi  commented on March 26, 2020, 12:03 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.

    • 18
      Tzak  commented on March 26, 2020, 12:18 a.m. edited

      If you want to print a floating-point value x in decimal format with n digits after the decimal point with std::cout, use the following:

      std::cout << std::fixed << std::setprecision(n) << x;

  • 6
    ross_cleary  commented on March 25, 2020, 9:53 p.m.

    Use doubles not floats.