회전하는 직선
시간 제한1초메모리 제한512 MB
원점에서 시작해 반시계 방향으로 도는 직선이 점을 만날 때마다 바뀌는 회전 중심을 구하고, 질의마다 q번째 중심의 좌표를 출력합니다.
문제
무한한 2차원 평면 위에 고정된 점 개와 회전하는 직선 하나가 주어진다. 점 중 하나는 원점 이고, 직선은 처음에 축과 일치한다. 점들은 서로 다르지만, 세 점 이상이 한 직선 위에 놓일 수도 있다.
직선은 반시계 방향으로 회전한다. 회전 중심은 항상 주어진 개의 점 중 하나이며, 처음에는 원점이다. 중심은 바뀔 수 있다. 직선 위에 점이 하나뿐인 동안에는 그 점이 회전 중심이다. 직선이 다른 점에 처음 닿는 순간, 직선 위에 있는 주어진 점을 모두 좌표 순으로 정렬한다. 직선 위에 점이 개 있고 현재 회전 중심이 그중 번째 점(1부터 센다)이라면, 다음 회전 중심은 그중 번째 점이다. 이면 회전 중심은 바뀌지 않는다. 처음부터 여러 점이 직선 위에 있어도 직선은 회전을 시작한다.
번째 회전 중심을 구하라. 처음 중심의 번호는 0이다. 중심이 바뀌지 않는 동안에는 번호가 올라가지 않는다. 주어진 점 집합에 대해 번째 회전 중심이 반드시 존재함이 보장된다.
입력
첫 줄에 점의 개수를 나타내는 정수 이 주어진다().
이어지는 개의 줄에는 점의 좌표를 나타내는 정수 와 가 각각 주어진다(). 주어지는 점 중 하나는 이다. 점들은 서로 다르지만, 세 점 이상이 한 직선 위에 놓일 수도 있다.
다음 줄에는 질의의 개수를 나타내는 정수 가 주어진다(). 이어지는 개의 줄에는 정수 가 하나씩 주어진다(). 질의는 엄격하게 오름차순으로 주어진다.
출력
개의 줄을 출력한다. 각 줄은 질의 하나에 대응하며, 번째 회전 중심의 좌표인 정수 두 개를 출력한다.
힌트
처음 회전 중심(0번)은 이다. 1번 회전 중심은 인데, 직선이 가장 먼저 닿는 점이기 때문이다.
그다음 직선은 과 두 점에 동시에 닿아서, 직선 위에는 점이 세 개가 된다. 정렬한 순서에서 첫 번째인 가 현재 중심이므로, 중심은 세 번째 점인 으로 바뀐다. 따라서 이 2번 회전 중심이다.
그다음 직선은 , , 세 점에 닿아서, 직선 위에는 점이 네 개가 된다. 현재 중심은 정렬한 순서에서 세 번째이므로, 3번 회전 중심은 네 점 중 두 번째인 이다.
같은 방식으로 4번 회전 중심은 이다.
그 뒤 직선은 와 두 점에 닿는다. 중심은 세 점 중 정렬 순서로 두 번째이므로 바뀌지 않는다.
그 뒤 직선이 에 닿으므로, 5번 회전 중심은 이다.