가장 왼쪽 선분

두 수평선을 잇는 n개의 선분이 주어질 때, 각 수평 질의선과 가장 왼쪽에서 만나는 선분을 찾고 교차점이 겹치면 위쪽 끝점이 더 왼쪽인 선분을 답한다.

어려움8정렬이분 탐색기하구현아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

xy 좌표평면에 서로 다른 두 수평선 hupperh_{upper}hlowerh_{lower}가 있고, 이 두 직선을 잇는 선분이 nn개 있다. 각 선분은 한 끝점이 hupperh_{upper} 위에, 다른 끝점이 hlowerh_{lower} 위에 있다. 선분의 끝점은 모두 다르다. 선분에는 11번부터 nn번까지 번호가 붙어 있다.

질의로는 hupperh_{upper}hlowerh_{lower} 사이에 놓인 수평선 hih_i가 주어진다. 이 직선은 모든 선분과 반드시 만난다. 질의마다 가장 왼쪽에서 만나는 선분을 찾아야 한다. 선분 두 개 이상이 한 점에서 만날 수 있으므로, 질의 직선과의 가장 왼쪽 교점을 여러 선분이 함께 지날 수 있다. 이때는 hupperh_{upper} 위의 끝점이 가장 왼쪽에 있는 선분을 답으로 한다.

예를 들어 아래 그림처럼 선분 5개와 질의 직선 3개가 주어졌다고 하자. y=2.0y = 2.0인 질의 직선과 가장 왼쪽에서 만나는 선분은 2번이고, y=4.0y = 4.0인 질의 직선에 대해서는 3번이다. y=6.25y = 6.25인 질의 직선은 3번 선분과 4번 선분의 교점을 지나므로, 위 규칙에 따라 답은 4번이다.

두 수평선을 잇는 선분 nn개와 질의 mm개가 주어질 때, 각 질의 직선과 가장 왼쪽에서 만나는 선분을 찾는 프로그램을 작성하시오.

선분 두 개 이상이 한 점에서 만날 수 있다는 점에 주의한다. 컴퓨터가 실수를 표현하는 방식에서 생기는 반올림 오차도 조심해야 한다.

입력

첫째 줄에 두 정수 maxYmaxYminYminY가 주어진다 (1000minY<maxY1000-1000 \le minY < maxY \le 1000). maxYmaxY는 위쪽 수평선의 yy좌표, minYminY는 아래쪽 수평선의 yy좌표이다.

둘째 줄에 두 수평선을 잇는 선분의 개수 nn이 주어진다 (1n1000001 \le n \le 100000). 선분에는 입력에 주어진 순서대로 11번부터 nn번까지 번호가 붙는다.

이어지는 nn개 줄에는 각 선분의 위쪽 끝점 xx좌표 upperXupperX와 아래쪽 끝점 xx좌표 lowXlowX가 주어진다 (500000upperX,lowX500000-500000 \le upperX, lowX \le 500000). 끝점은 모두 다르다.

다음 줄에 질의의 개수 mm이 주어진다 (1m1000001 \le m \le 100000). 이어지는 mm개 줄에는 질의 수평선의 yy좌표가 한 줄에 하나씩 주어진다. 이 값은 minYminY보다 크고 maxYmaxY보다 작은 실수이며, 소수점 아래 자릿수는 1자리 이상 3자리 이하이다.

출력

질의마다 한 줄씩, 입력에 주어진 순서대로 출력한다. 각 줄에는 그 질의 수평선과 가장 왼쪽에서 만나는 선분의 번호를 출력한다.