SP14862 ULASER - Union Laser
Description
Doctor Y, a leading expert in the field of boxology, is investigating the properties of boxen with his expensive super-precision laser. In particular, he plans to position the laser inside the union of a bunch of boxen, and see where the beam collides with itself.
Since Doctor Y blew all his cash on the laser, he can’t actually afford to purchase boxen to conduct his experiment – instead, he will simulate it on his old computer, which uses an integer grid system. He will give his computer an integer $ N $ , the number of boxen ( $ 1 \leq N \leq 10,000 $ ), as well as their descriptions. Each box is described by 4 integers, $ x_1 $ , $ y_1 $ , $ x_2 $ , and $ y_2 $ , and is an axis-aligned rectangle with coordinates ( $ x_1 $ , $ y_1 $ ) and ( $ x_2 $ , $ y_2 $ ) describing a pair of its opposite corners. Boxen may overlap with one another. He will also input the location of the laser ( $ A $ , $ B $ ), such that it will be positioned strictly within at least one of the boxen. The laser points down and right at a 45° angle. All coordinates have absolute values of at most $ 3000 $ .
As it turns out, boxen are made of a perfectly reflective material (a fact which Doctor Y will discover upon completion of his experiment) – as such, whenever the laser beam hits the edge of the union of the boxen, it bounces off. For example, if it hits a vertical edge from the left, it bounces to the right, with the up-down direction preserved. If it hits a corner head-on, it will reverse direction, hence colliding with itself right at the corner. Normally, light travels quite fast, but due to the mysterious properties of boxen, the speed of light when inside a box union is only √2 units/second.
Doctor Y plans to use his computer to simulate the path of the laser and see when and where it first collides with itself, but there’s one problem – he doesn't know how to program! Offering non-cafeteria food, he lures a desperate Waterloo student into his lab, where he forces him (or her?) to write the laser simulation program. That’s you.
Input Format
Line $ 1 $ : 1 integer, $ N $
Line $ 2 $ : 2 integers, $ A $ and $ B $
Next $ N $ lines: 4 integers, $ x_1 $ , $ y_1 $ , $ x_2 $ , and $ y_2 $ , describing the coordinates of each box
Output Format
If the laser beam never collides with itself or the laser, simply output “Time limit exceeded”.
If the laser beam collides with the actual laser (at coordinates ( $ A $ , $ B $ )) before it collides with another location through which the beam has already passed, the first line of output should consist of a single number – the amount of time that passes before laser beam collides with the laser, in seconds. The second line should read “Broken equipment”.
Otherwise, the first line of output should consist of a single number – the amount of time that passes before laser beam first collides with itself, in seconds. The second line should contain a pair of numbers – the x and y coordinates of where this takes place.
Each number should be rounded off to 1 decimal place.