CF350D Looking for Owls
题目描述
### 题意简述
给出一些圆和线段。
定义一个“猫头鹰”是满足以下四个条件的一条线段和两个圆的集合。
1. 两个圆半径相等
1. 两个圆没有交点
1. 两个圆关于线段对称
1. 两个圆圆心的连线和线段有交点
请找出图上不同“猫头鹰”的数量。
输入格式
第一行两个整数 $n$ 和 $m ( 1\le n\le 3·10^5,2\le m\le 1500)$。
接下来的 $n$ 行分别包含四个整数 $x_1,y_1,x_2,y_2$, 表示线段的两个端点的坐标。保证每条线段长度大于 $0$。
接下来的 $m$ 行分别包含三个整数 $x_i,y_i,r_i$, 表示第 $i$ 个圆的圆心坐标和半径长度。所有的坐标都是绝对值最大为 $10^4$ 的整数。圆的半径是一个最大 $10^4$ 的正整数。
输出格式
输出一个数字 — 问题的答案。
对于C++,请不要使用 %lld 说明符输出 64 位整数。最好使用 cout 流或 %I64d 说明符。
说明/提示
Here's an owl from the first sample. The owl is sitting and waiting for you to count it.
