
USACO 2013 January Contest, Bronze
Problem 1. Mirrors
Contest has ended.

Log in to allow submissions in analysis mode
Problem 1: Mirrors [Brian Dean and Travis Hance, 2013]
Farmer John's cows have been causing too much trouble around the farm, and
FJ therefore wants to keep a more watchful eye on them. By installing N
reflective fences (1 <= N <= 200) at various locations on the farm, he
hopes to be able to see from his house at location (0,0) to the barn at
location (a,b).
On a 2D map of FJ's farm, fence i appears as a short line segment centered
at integer location (x_i, y_i) and tilted 45 degrees (either like '/' or
like '\'). For example, a fence oriented like '/' at position (3,5) could
be described as a line segment from (2.9,4.9) to (3.1,5.1). Each fence
(and also the location of the barn) lies at a different position with
integer coordinates in the range -1,000,000...1,000,000. No fence lies at
(0,0) or (a,b).
FJ plans to sit at his house at position (0,0) and look directly to the
right (in the +x direction). With his gaze bouncing off some of the
reflective fences on his farm, he hopes to be able to see the point (a,b).
Unfortunately, FJ thinks he oriented one of his fences incorrectly (e.g.,
'\' instead of '/'). Please output the index of the first fence in FJ's
list such that by toggling its direction (between '/' and '\' or vice
versa), FJ will be able to see the point (a,b).
If FJ can already see the point (a,b) without toggling any fence, please
output 0. If it is still impossible for him to see (a,b) even after
toggling up to a single fence, output -1.
PROBLEM NAME: mirrors
INPUT FORMAT:
* Line 1: Three space-separated integers, N, a, and b.
* Lines 2..1+N: Line i+1 describes fence i and contains either "x_i
y_i /" or "x_i y_i \", where (x_i, y_i) is the location of the
center of the fence, and \ or / refers to its orientation.
SAMPLE INPUT (file mirrors.in):
5 6 2
3 0 /
0 2 /
1 2 /
3 2 \
1 3 \
INPUT DETAILS:
A map of the farm looks like this (with H denoting FJ's house and B
denoting the barn):
3 .\.....
2 //.\..B
1 .......
0 H../...
0123456
OUTPUT FORMAT:
* Line 1: The index of the first fence for which toggling that fence
allows FJ to see the point (a,b). If FJ can already see the
point (a,b), please output 0, or if there is no way he can see
(a,b) even after toggling up to one fence, please output -1.
SAMPLE OUTPUT (file mirrors.out):
4
OUTPUT DETAILS:
By toggling the fence at position (3,2), FJ can see the point (a,b). On
the map:
3 .\.....
2 //./--B
1 ...|...
0 H--/...
0123456
Contest has ended. No further submissions allowed.