두 수평선을 잇는 n개의 선분이 주어질 때, 각 수평 질의선과 가장 왼쪽에서 만나는 선분을 찾고 교차점이 겹치면 위쪽 끝점이 더 왼쪽인 선분을 답한다.
어려움8정렬이분 탐색기하구현아직 제출이 없습니다시간 제한1초메모리 제한512 MBxy 좌표평면에 서로 다른 두 수평선 hupper와 hlower가 있고, 이 두 직선을 잇는 선분이 n개 있다. 각 선분은 한 끝점이 hupper 위에, 다른 끝점이 hlower 위에 있다. 선분의 끝점은 모두 다르다. 선분에는 1번부터 n번까지 번호가 붙어 있다.
질의로는 hupper와 hlower 사이에 놓인 수평선 hi가 주어진다. 이 직선은 모든 선분과 반드시 만난다. 질의마다 가장 왼쪽에서 만나는 선분을 찾아야 한다. 선분 두 개 이상이 한 점에서 만날 수 있으므로, 질의 직선과의 가장 왼쪽 교점을 여러 선분이 함께 지날 수 있다. 이때는 hupper 위의 끝점이 가장 왼쪽에 있는 선분을 답으로 한다.
예를 들어 아래 그림처럼 선분 5개와 질의 직선 3개가 주어졌다고 하자. y=2.0인 질의 직선과 가장 왼쪽에서 만나는 선분은 2번이고, y=4.0인 질의 직선에 대해서는 3번이다. y=6.25인 질의 직선은 3번 선분과 4번 선분의 교점을 지나므로, 위 규칙에 따라 답은 4번이다.

두 수평선을 잇는 선분 n개와 질의 m개가 주어질 때, 각 질의 직선과 가장 왼쪽에서 만나는 선분을 찾는 프로그램을 작성하시오.
선분 두 개 이상이 한 점에서 만날 수 있다는 점에 주의한다. 컴퓨터가 실수를 표현하는 방식에서 생기는 반올림 오차도 조심해야 한다.
첫째 줄에 두 정수 maxY와 minY가 주어진다 (−1000≤minY<maxY≤1000). maxY는 위쪽 수평선의 y좌표, minY는 아래쪽 수평선의 y좌표이다.
둘째 줄에 두 수평선을 잇는 선분의 개수 n이 주어진다 (1≤n≤100000). 선분에는 입력에 주어진 순서대로 1번부터 n번까지 번호가 붙는다.
이어지는 n개 줄에는 각 선분의 위쪽 끝점 x좌표 upperX와 아래쪽 끝점 x좌표 lowX가 주어진다 (−500000≤upperX,lowX≤500000). 끝점은 모두 다르다.
다음 줄에 질의의 개수 m이 주어진다 (1≤m≤100000). 이어지는 m개 줄에는 질의 수평선의 y좌표가 한 줄에 하나씩 주어진다. 이 값은 minY보다 크고 maxY보다 작은 실수이며, 소수점 아래 자릿수는 1자리 이상 3자리 이하이다.
질의마다 한 줄씩, 입력에 주어진 순서대로 출력한다. 각 줄에는 그 질의 수평선과 가장 왼쪽에서 만나는 선분의 번호를 출력한다.