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. ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF350D/61898774872e3a34e56e4869f77f49d1bd8725ed.png)