아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

산악 지형

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

요약
왼쪽에서 오른쪽으로 이어진 꺾은선에서 각 구간을 연장한 광선보다 엄격히 위에 점이 있는 가장 가까운 오른쪽 구간을 구합니다.
난이도

어려움10점 중 8점

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

문제

산으로 이루어진 풍경을 지나며 여행한다. 경로에는 봉우리와 골짜기를 합쳐 nn개의 지점이 있다. 잠시 숨을 고르면서, 지금 지평선 위로 보이는 산이 어느 것인지 궁금해졌다.

형식적으로 정리하면 이렇다. 평면 위의 꺾은선 P1P2…PnP_1 P_2 \dots P_n이 주어지고, 각 점의 xx좌표는 순증가한다. 꺾은선의 각 선분 PiPi+1P_i P_{i+1}에 대해, 선분 PjPj+1P_j P_{j+1} 위의 어떤 점이 PiP_i에서 Pi+1P_{i+1} 방향으로 뻗는 반직선보다 엄밀히 위에 놓이는 가장 작은 인덱스 j>ij > i를 구하라.

점 Q=(x,y)Q = (x, y)가 반직선 Pi→Pi+1P_i \to P_{i+1}보다 엄밀히 위에 있다는 것은 x≥xi+1x \ge x_{i+1}이면서 (xi+1−xi)(y−yi)−(yi+1−yi)(x−xi)>0(x_{i+1} - x_i)(y - y_i) - (y_{i+1} - y_i)(x - x_i) > 0이라는 뜻이다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 테스트 케이스가 하나씩 주어진다.

각 테스트 케이스의 첫 줄에는 꺾은선의 꼭짓점 개수 nn이 주어진다 (2≤n≤1000002 \le n \le 100000).

다음 nn개 줄에는 꼭짓점 PiP_i의 정수 좌표 xix_i와 yiy_i가 주어진다 (0≤x1<x2<⋯<xn≤1090 \le x_1 < x_2 < \dots < x_n \le 10^9, 0≤yi≤1090 \le y_i \le 10^9).

출력

각 테스트 케이스마다 n−1n-1개의 정수를 공백으로 구분해 한 줄에 출력한다. ii번째 수는 선분 PiPi+1P_i P_{i+1}에서 오른쪽으로 보이는 선분 중 가장 작은 인덱스이고, 그런 선분이 없으면 0이다.

예제4

  1. 예제 1

    입력
    2
    8
    0 0
    3 7
    6 2
    9 4
    11 2
    13 3
    17 13
    20 7
    7
    0 2
    1 2
    3 1
    4 0
    5 2
    6 1
    7 3
    
    예상 출력
    0 3 6 5 6 0 0
    6 4 4 0 6 0
    
  2. 예제 2

    입력
    1
    2
    0 0
    1000000000 1000000000
    
    예상 출력
    0
    
  3. 예제 3

    입력
    1
    5
    0 0
    1 2
    2 4
    3 6
    4 8
    
    예상 출력
    0 0 0 0
    
  4. 예제 4

    입력
    1
    6
    0 0
    1 1
    2 4
    3 9
    4 16
    5 25
    
    예상 출력
    2 3 4 5 0