https://www.acmicpc.net/problem/32195
import sys
input=sys.stdin.readline
N=int(input())
# N개의 타구의 좌표
hits = []
foul_flags=[]
distances=[]
for i in range(N):
x,y=map(int,input().split())
hits.append((x,y))
# 파울 확인 코드
if y<x or y<-x:
# 파울인 경우
foul_flags.append(True)
else:
# 파울이 아닌 경우
foul_flags.append(False)
distances.append(x**2 + y**2)
# 파울 아닌 타구들의 거리 제곱 값을 정렬
distances.sort()
# Q개의 담장 거리 후보
Q=int(input())
# 담장까지의 거리 리스트
R_list = []
for i in range(Q):
R_list.append(int(input()))
def binary_search(arr,target):
low, high = 0, len(arr)-1
while low <= high:
mid = (low+high) //2
if arr[mid] <=target:
low = mid +1
else:
high = mid -1
return low
# 각 거리 후보에 대한 파울, 내야, 홈런의 개수를 저장할 리스트
result = []
for R in R_list:
foul = 0
infield = 0
homerun = 0
R_squared = R**2
foul_count = sum(foul_flags)
infield_count = binary_search(distances, R_squared)
homerun_count = len(distances) - infield_count
result.append(f"{foul_count} {infield_count} {homerun_count}")
sys.stdout.write("\n".join(result) + "\n")