## CCC '00 S5 - Sheep and Coyotes

View as PDF

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

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

A square by 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 , the northwest corner at , the northeast corner at and the southeast corner at .

#### Input Specification

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

#### Output Specification

For each sheep that might be eaten print a line The sheep at (x, y) might be eaten. where and 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.

• 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?

• 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.

• 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.

• 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 ._.

• 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.

• 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?

• 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.

• commented on Nov. 20, 2020, 8:03 p.m.

Yes

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

Did a test case get added to this problem?

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

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

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

What is the intended time complexity for that test case? solution passed in 0.133s.

• 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.

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

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

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

• 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.

• 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

• commented on July 21, 2022, 12:30 a.m.

Oh, thank you

• 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?

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

Make sure to format your output to 2 decimal places.

• 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?

• 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.

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

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