CCC '20 S1 - Surmising a Sprinter's Speed

View as PDF

Submit solution

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

Problem type
Allowed languages
Ada, Assembly, Awk, Brain****, C, C#, C++, COBOL, CommonLisp, D, Dart, F#, Forth, Fortran, Go, Groovy, Haskell, Intercal, Java, JS, Kotlin, Lisp, Lua, Nim, ObjC, OCaml, Octave, Pascal, Perl, PHP, Pike, Prolog, Python, Racket, Ruby, Rust, Scala, Scheme, Sed, Swift, TCL, Text, Turing, VB, Zig
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|} C < 10^{-5}.

Sample Input 1

3
0 100
20 50
10 120

Output for Sample Input 1

7.0

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

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

Output for Sample Input 2

6.8

Comments


  • -18
    wleung_bvg  commented on April 20, 2020, 4:04 p.m.

    This comment is hidden due to too much negative feedback. Click here to view it.


  • -2
    orangewave  commented on April 3, 2020, 10:46 a.m. edited

    I can't get batch #3 to pass. I'm using python3. Here is my code: https://pastebin.com/iEztHv4J

    Any suggestions?


    • 5
      sushi  commented on April 3, 2020, 4:39 p.m.

      I suggest you reread the problem, is it possible to be at time 20 before time 10?


    • 1
      mathgeek008  commented on April 3, 2020, 1:07 p.m.

      Using a temporary list and iterating through it (nested for loop) effectively squares the number of operations the program does before printing. Try implementing an algorithm that avoids doing this.


    • 2
      RyanLi  commented on April 3, 2020, 1:06 p.m. edited

      Your solution is O(N^2). The intended solution is O(N log N). Try thinking of a faster way to calculate the speeds.

      Edit: Forgot sorting existed


      • 10
        magicalsoup  commented on April 20, 2020, 8:22 p.m.

        The intended solution is not necessarily O(n). I think O(n \log n) would be more correct.


  • 3
    Evan_Real  commented on April 1, 2020, 7:39 p.m.

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


    • 5
      TimothyW553  commented on April 1, 2020, 11:13 p.m. edited

      I only printed to 1 decimal place during CCC 🐒


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

        orz timothy cco chad passing s1 with only 1 decimal place


  • -7
    RyanLi  commented on March 25, 2020, 8:03 p.m.

    This comment is hidden due to too much negative feedback. Click here to view it.


    • 13
      Tzak  commented on March 25, 2020, 8:18 p.m.

      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;

  • 4
    ross_cleary  commented on March 25, 2020, 5:53 p.m.

    Use doubles not floats.