P3091 [USACO13NOV] Line of Sight G

题目描述

Farmer John 的 $N$ 头奶牛位于二维牧场中的不同点上。牧场中央有一个大型圆形谷仓。位于谷仓两侧、视线被谷仓挡住的奶牛无法互相看见。请计算有多少对奶牛可以通过直接视线互相看见。 谷仓是以原点 $(0,0)$ 为圆心、半径为 $R$ 的圆。没有奶牛位于谷仓对应的圆上或圆内,并且任意两头奶牛确定的直线都不会与谷仓相切。

输入格式

第一行包含两个整数:$N$ 和 $R$。 接下来 $N$ 行,每行包含两个整数,表示一头奶牛的坐标 $(x,y)$。

输出格式

输出一个整数,表示可以互相看见的奶牛对数。

说明/提示

有 $4$ 头奶牛,分别位于 $(0,10)$、$(0,-10)$、$(10,0)$ 和 $(-10,0)$。谷仓以 $(0,0)$ 为圆心,半径为 $5$。 除了位于谷仓正对两侧的奶牛对外,其余所有奶牛对都可以互相看见: - $(-10,0)$ 和 $(10,0)$ 无法互相看见; - $(0,-10)$ 和 $(0,10)$ 无法互相看见。 总共有 $6$ 对奶牛,其中 $2$ 对被谷仓挡住,因此答案是 $4$。 ## 数据范围 $1 \le N \le 50000$ $1 \le R \le 10^6$ $|x|, |y| \le 10^6$