만드는 중입니다

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

야구

면접 대비

시간 제한1초메모리 제한1024 MB

요약
타구 위치와 후보 펜스 거리가 주어질 때, 각 거리마다 파울, 내야 타구, 홈런의 개수를 구합니다.
난이도

보통10점 중 5점

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

문제

야구장의 담장은 원의 1/4을 이루는 원주 형태이며, 2차원 좌표 평면에서 중심이 원점인 원의 방정식 x2+y2=R2x^2 + y^2 = R^2으로 주어진다. 여기서 RR은 담장까지의 거리이다. 담장의 범위는 동경 45∘45^\circ에서 135∘135^\circ에 해당한다.

다시 말해, 담장은 아래 부등식을 만족하면서 x2+y2=R2x^2 + y^2 = R^2을 만족하는 점들로 이루어진다.

y≥x y \geq x 및 y≥−xy \geq -x

타구는 위치에 따라 다음과 같이 분류된다.

  • 내야: 타구가 담장으로 둘러싸인 부채꼴 영역의 안(경계 포함)에 있다.
  • 홈런: 타구가 담장 바깥에 있고, 홈 플레이트(좌표 평면의 원점)와 타구의 위치를 잇는 선분이 담장과 만난다.
  • 파울: 그 밖의 경우.

LG 트윈스와 두산 베어스는 잠실 야구장을 홈구장으로 쓴다. 두 구단은 더 나은 환경에서 경기하려고 잠실 야구장을 돔구장으로 재건축할 계획이다. 재건축 계획에서 가장 중요한 부분은 담장까지의 거리를 정하는 것이다. 구단은 담장까지의 거리로 후보 R1,⋯ ,RQR_1, \cdots, R_Q 개를 고려하고 있다.

여러 타구의 위치가 주어졌을 때, 담장까지의 거리 후보마다 파울, 내야, 홈런의 개수를 계산하라.

입력

첫 줄에 전체 타구의 개수 NN이 주어진다.

다음 NN개의 줄에는 ii번째 줄(1≤i≤N1 \le i \le N)에 ii번째 타구가 떨어진 지점의 좌표 xix_i와 yiy_i가 공백을 사이에 두고 주어진다.

다음 줄에는 담장까지 거리의 후보 수 QQ가 주어진다.

다음 QQ개의 줄에는 ii번째 줄(1≤i≤Q1 \le i \le Q)에 담장까지의 거리로 고려하는 ii번째 후보 RiR_i가 주어진다.

출력

ii번째 줄(1≤i≤Q1 \le i \le Q)에는 담장까지의 거리가 RiR_i일 때 파울 타구의 수, 내야 타구의 수, 홈런의 수를 공백으로 구분하여 출력한다.

제한

  • 1≤N≤300 0001 \le N \le 300\,000
  • −109≤xi≤109-10^9 \le x_i \le 10^9 (1≤i≤N1 \le i \le N)
  • −109≤yi≤109-10^9 \le y_i \le 10^9 (1≤i≤N1 \le i \le N)
  • 1≤Q≤300 0001 \le Q \le 300\,000
  • 1≤Ri≤1091 \le R_i \le 10^9 (1≤i≤Q1 \le i \le Q)
  • 주어지는 모든 수는 정수이다.

힌트

충분히 빠른 입출력 방식을 쓰지 않으면 시간 초과를 받을 수 있다. 예를 들어 C++에서 cin/cout을 쓴다면 입력을 받기 전에 cin.tie(NULL);을 호출하고, Python에서는 input() 대신 sys.stdin.readline()을 쓰는 것을 권장한다.

예제1

  1. 예제 1

    입력
    3
    2 1
    1 2
    300 400
    2
    1
    500
    
    예상 출력
    1 0 2
    1 2 0