CCC '00 S5 - Sheep and Coyotes

View as PDF

Submit solution

Points: 10 (partial)
Time limit: 1.0s
Memory limit: 256M

Problem type
Canadian Computing Competition: 2000 Stage 1, Senior #5

A square 1000 by 1000 field contains several sheep. A coyote enters the field at some point in the south boundary and proceeds to eat the sheep closest to the point of entry, picking arbitrarily if more than one sheep is equally close. The coyote, being sated, then leaves the field.

Your job is to determine which sheep may be eaten by the coyote.

Assume that the southwest corner of the field is located at (0.00, 0.00), the northwest corner at (0.00, 1000.00), the northeast corner at (1000.00, 1000.00) and the southeast corner at (1000.00, 0.00).

Input Specification

The first line of input gives the number of sheep, between 1 and 1000. For each sheep a pair of lines follows, giving its coordinates within the field (between 0.00 and 1000.00).

Output Specification

For each sheep that might be eaten print a line The sheep at (x, y) might be eaten. where x and y give the location of the sheep to two decimal places. The sheep can be listed in any order in the output.

Sample Input

6
100.00
100.00
200.00
150.00
140.00
200.00
100.00
300.00
300.00
300.00
300.00
100.00

Sample Output

The sheep at (100.00, 100.00) might be eaten.
The sheep at (300.00, 100.00) might be eaten.

Comments


  • 0
    aqtsaqts  commented on Feb. 12, 2024, 1:22 a.m.

    Am I doing something wrong for test case 6, or is this a floating point error?


  • 6
    1maeth2  commented on Sept. 25, 2021, 4:13 a.m.

    This is how I tackled the float point imprecision for test case #6:

    Since by default floats have a precision of around 24 bits or 7 decimal places (reference), if the decimals get too small the program would not make the precise calculations. To counteract this I shifted the decimals up a few places by multiplying all the values by 10^3. Because I know that the x and y coordinates would not exceed 1000, there was no need to worry about encountering overflow errors.


  • 9
    cabbagecabbagecabbage  commented on Feb. 23, 2021, 8:32 p.m.

    I've seen a lot of WA's on this problem (especially on test case 6), many of which have the correct algorithm but WA because of floating point imprecision. For example, with Python 3, you likely will not pass using floats (depending on your algorithm) because they are not accurate enough. To work around this, consider using the decimal module as described here and make sure not to use float() anywhere in your program (although I'm sure there are other workarounds). I'm not sure about other languages.

    Normally I wouldn't leave "hints" in the comments, but to a beginner who has never heard of the concept that computers can't store decimals perfectly accurately, they could potentially waste hours debugging their conceptually correct algorithm in vain. Hope this helps.


    • 2
      myl  commented on Feb. 25, 2021, 1:36 a.m. edited

      For the output, would you still round to 2 decimal places for case 6? And should the rounding be half-up or just truncated? I'm using the decimals module and it's still not working.

      Also why do they have to troll us like this, case 6 wasn't even in the CCC ._.


      • 0
        cabbagecabbagecabbage  commented on Feb. 26, 2021, 4:38 a.m. edited

        Your mistake is that you're putting l >= r on line 36 in your latest submission, when in fact l == r gives a valid interval. As a side note, I believe they prefer people asking for help on discord instead of the comments to avoid clogging up the comment section.


  • 1
    tortle  commented on Nov. 28, 2020, 4:24 p.m.

    It's possible for multiple sheep to have the same coordinates right? And we have to output whether they might be eaten for each of them?


  • 2
    dxke02  commented on Nov. 20, 2020, 5:07 p.m.

    Does the coyote enter anywhere in the "bottom" of the land, the problem does not state where it enters.


  • 4
    Lynthical  commented on Sept. 7, 2020, 10:44 p.m.

    Did a test case get added to this problem?


    • 5
      Kirito  commented on Sept. 7, 2020, 11:22 p.m.

      We added PEG's additional (anti-brute force) testcase and rejudged all submissions.

      The old cases make up 50/100 points, so only passing the original cases will still give you 10 points on the problem.


      • 3
        Render_Main  commented on Sept. 9, 2020, 1:33 a.m. edited

        What is the intended time complexity for that test case? \mathcal{O}(N^3) solution passed in 0.133s.


        • 5
          Kirito  commented on Sept. 9, 2020, 9:11 p.m.

          DMOJ judges are too fast, we could kill that by making TL go down to 0.05 or something, but then we'd have to tune TLs for other languages and it's not worth the effort.

          There's a hard version for anyone who wants to try their hand at solving the problem with larger constraints.


  • 26
    Tomorrow  commented on May 25, 2020, 11:28 p.m. edited

    For those who keep getting WA on case 5, this picture might be helpful.

    official test case

    Each point represents a sheep. All sheep not colored in green might be eaten.


    • 0
      Dunkmastergamer  commented on July 19, 2022, 10:59 p.m.

      How is this possible, I don't really understand? The bottom most black dot is closer to the x-axis than the others.


      • 2
        Orion222  commented on July 20, 2022, 2:46 a.m.

        if the coyote comes from the right-most part of the x-axis, then that black dot is the furthest from the coyote


  • 0
    noYou  commented on March 11, 2020, 8:59 p.m.

    Why am I getting wa for all cases? I checked the official test data, and my program matches the expected output?


    • 3
      Togohogo1  commented on March 12, 2020, 3:27 a.m. edited

      Make sure to format your output to 2 decimal places.


  • 0
    septence123  commented on Feb. 8, 2017, 3:32 a.m. edited

    when I submit in PyPy I get MLE, even though it only uses around 5 mb when I submit it in Python? any reason for this?


    • 17
      Xyene  commented on Feb. 8, 2017, 5:45 a.m.

      Yes, the memory limit for this problem is 16M, and even a hello world program uses 30M in PyPy. That's the trade-off between performance and memory usage.


  • 9
    onlyIfStatement  commented on Jan. 3, 2017, 3:53 p.m.

    Is case 5 testing for a precision error or am i making another mistake?