CF32E Hide-and-Seek
题目描述
Victor 和 Peter 正在玩捉迷藏。Peter 躲起来了,而 Victor 要找到他。在他们玩耍的房间里,只有一堵不透明的墙和一面双面镜子。Victor 和 Peter 的坐标分别为 $ (x_{v},y_{v}) $ 和 $ (x_{p},y_{p}) $。墙是连接坐标 $ (x_{w,1},y_{w,1}) $ 和 $ (x_{w,2},y_{w,2}) $ 的线段,镜子是连接坐标 $ (x_{m,1},y_{m,1}) $ 和 $ (x_{m,2},y_{m,2}) $ 的线段。
如果某个障碍物与视线有公共点,则认为双方无法通过该视线看到对方。如果镜子与视线有公共点,则认为双方能通过镜子看到对方,即发生了反射。反射过程遵循物理规律——入射角等于反射角。入射光线和反射光线位于镜子所在直线的同一侧。也就是说,要想互相看到,Victor 和 Peter 必须在包含镜子的直线的同侧(见样例 1)。如果视线与镜子平行,则不会发生反射,此时镜子也不被当作障碍物(见样例 4)。
Victor 对于自己是否能原地看到 Peter 感到好奇。请你帮助他解决这个问题。
输入格式
第一行包含两个整数 $x_{v}$ 和 $y_{v}$,表示 Victor 的坐标。
第二行包含两个整数 $x_{p}$ 和 $y_{p}$,表示 Peter 的坐标。
第三行包含四个整数 $x_{w,1}$、$y_{w,1}$、$x_{w,2}$、$y_{w,2}$,表示墙的两个端点坐标。
第四行包含四个整数 $x_{m,1}$、$y_{m,1}$、$x_{m,2}$、$y_{m,2}$,表示镜子的两个端点坐标。
所有坐标都是整数,且绝对值不超过 $10^{4}$。保证线段之间没有公共点,Victor 和 Peter 也不在任何一条线段上,Victor 和 Peter 的坐标不同,所有线段不会退化成点。
输出格式
如果 Victor 能原地看到 Peter,输出 YES;否则输出 NO。
说明/提示
由 ChatGPT 5 翻译