만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

얼음 이글루

시간 제한10초메모리 제한512 MB

요약
최대 10만 개의 선분이 작고 서로 겹치지 않는 격자 원 중 몇 개를 통과하는지 셉니다.
난이도

보통10점 중 7점

유형
기하, 행렬
정답자
아직 제출이 없습니다

문제

북극 가까운 곳, 얼어붙은 호수 위에 세워진 어촌 마을이 지구 온난화로 위험에 빠졌다. 호수 표면에 균열이 생기기 시작한 것이다. 마을은 구 모양의 이글루 nn개로 이루어져 있고, 이글루 하나는 호수 표면에서 원 모양 영역을 차지한다.

이글루는 좌표평면 위의 원으로 나타낼 수 있다. 원의 중심은 좌표가 정수인 점이고, 반지름은 소수점 아래가 정확히 한 자리이며 11보다 작은 양의 실수이다.

균열이 생길 수 있는 위치가 주어지면, 마을 사람들은 균열마다 이글루 몇 개가 영향을 받는지 알고 싶어 한다. 다시 말해 두 끝점으로 정해지는 선분이 질의로 qq개 주어질 때, 선분마다 그 선분과 만나는 이글루의 개수를 구한다. 선분이 원의 내부와 적어도 한 점을 공유하면 그 선분은 이글루와 만난다.

입력

첫째 줄에 이글루의 개수 nn (1≤n≤100 0001 \le n \le 100\,000)이 주어진다. 다음 nn개 줄에는 각각 이글루 하나의 중심 좌표 xx, yy와 반지름 rr이 주어진다. xx와 yy는 1≤x,y≤5001 \le x, y \le 500인 정수이고, rr은 0<r<10 < r < 1이면서 소수점 아래가 정확히 한 자리인 실수이다. 어떤 두 이글루도 서로 겹치거나 접하지 않는다.

다음 줄에 질의의 개수 qq (1≤q≤100 0001 \le q \le 100\,000)가 주어진다. 다음 qq개 줄에는 각각 선분의 두 끝점 좌표 x1x_1, y1y_1, x2x_2, y2y_2 (1≤x1,y1,x2,y2≤5001 \le x_1, y_1, x_2, y_2 \le 500)가 정수로 주어진다. 두 끝점은 서로 다르다. 끝점이 이글루 내부에 있을 수도 있다.

모든 이글루 ii와 모든 선분 ss에서, ss와 ii의 중심 사이 거리의 제곱은 r2−10−5r^2 - 10^{-5}보다 작거나 r2+10−5r^2 + 10^{-5}보다 크다. 여기서 rr은 이글루 ii의 반지름이다.

출력

qq개 줄을 출력한다. kk번째 줄에는 kk번째 선분과 만나는 이글루의 개수를 출력한다.

힌트

예제2

  1. 예제 1

    입력
    5
    4 2 0.6
    7 3 0.7
    8 5 0.8
    1 3 0.7
    3 4 0.4
    2
    3 1 9 6
    3 4 7 2
    
    예상 출력
    2
    1
    
  2. 예제 2

    입력
    3
    2 2 0.9
    5 5 0.5
    10 1 0.3
    4
    2 2 3 3
    1 5 10 5
    10 1 10 2
    1 1 1 500
    
    예상 출력
    1
    1
    1
    0