CF84C Biathlon

题目描述

也许很多人都听说过世界冬季两项锦标赛已经结束。虽然我们的主角 Valera 并未亲自到场,只是在电视上观看了这场精彩的赛事,但这一切依然让他非常兴奋,于是他决定报名参加一个冬季两项训练班。 当然,冬季两项和其他任何体育运动一样,实践起来十分困难。这需要花费大量的时间和精力。训练、训练、再训练——这就是 Valera 走向冬季两项伟大成就道路上所要经历的事情。 至于训练,你们大概都知道,每个职业冬季两项运动员都必须滑雪速度快,同时在靶场上射击精准。只有如此,才能取得成功,因为奔跑和射击是冬季两项的两个主要组成部分。Valera 在滑雪训练上非常刻苦,因此他的速度很快,但他的射击准确率却不值得一提。 Valera 所训练的冬季两项基地里,有一个巨大的射击场,里面有 $n$ 个靶子。每个靶子的形状都是圆形,且每个圆的圆心都位于 $Ox$ 轴上。在最近的一次训练中,Valera 一共射击了 $m$ 次。为了方便他自己记录成绩,一位颇有名气的程序员(当然就是你)被委托编写一个程序,用于统计 Valera 击中了多少个靶子,以及击中的是哪些靶子。更具体地说,对于每个靶子,程序需要输出被首次击中的那一枪的编号,如果该靶子未被击中则输出“-1”。只要子弹打在圆内或圆的边界上,就认为击中了该靶子。Valera 很依赖你,也许凭借你的帮助他有朝一日能赢得国际比赛。

输入格式

输入的第一行为整数 $n$($1 \leq n \leq 10^4$),表示靶子的数量。接下来的 $n$ 行描述每个靶子。每个靶子是一个圆,其圆心都位于 $Ox$ 轴上。每个圆由其圆心坐标 $x$($-2 \cdot 10^4 \leq x \leq 2 \cdot 10^4$)和半径 $r$($1 \leq r \leq 1000$)给出。保证不存在哪两个靶子完全重合、相交或相互包含,但它们可以相切。 接下来一行是一个整数 $m$($1 \leq m \leq 2 \cdot 10^5$),表示射击次数。接下来的 $m$ 行描述每次射击,每次射击是平面上的一个点,由其坐标 $x$ 和 $y$ 给出($-2 \cdot 10^4 \leq x, y \leq 2 \cdot 10^4$)。 输入中所有的数都是整数。 靶子和射击按照输入顺序从 $1$ 开始编号。

输出格式

第一行输出一个整数,表示 Valera 击中的靶子数量。第二行输出 $n$ 个整数,第 $i$ 个数表示第 $i$ 个靶子被首次击中的那一枪的编号,如果该靶子没有被击中则输出 $-1$。用空格分隔各个数字。

说明/提示

由 ChatGPT 5 翻译