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

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

비행 허가 요청

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

요약
볼록 다각형 나라와 M개 관제소의 최근접 보로노이 영역이 주어질 때, 나라 밖에서 시작해 밖에서 끝나는 직선 비행 경로가 지나는 영역 번호를 순서대로 출력한다.
난이도

어려움10점 중 8점

유형
기하, 완전 탐색, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

세계 초강대국이 지구 반대편으로 공습을 준비하고 있다. 이를 위해 여러 대의 비행기를 다른 대륙 상공으로 보내야 한다. 그 항로 위에 있는 작은 나라 TidyLand는 자국 영공을 통과해도 좋은지 허가 요청을 받았다.

TidyLand의 국경은 볼록 다각형 모양이다. TidyLand의 영공은 여러 개의 구역(segment) 으로 나뉘어 있으며, 각 구역은 하나의 관제소가 감시·관제한다. 구역은 영공의 임의의 점이 그 점에서 가장 가까운 관제소에 의해 관제되도록 나뉘어 있다.

허가 요청에는 비행의 시작 좌표와 끝 좌표가 적혀 있다(두 점 모두 TidyLand 바깥에 있다). 비행기는 일정한 고도를 유지하며 직선으로 비행한다. 모든 관제소의 고도가 같으므로 이 문제는 평면 위에서 다룬다. TidyLand 관제 본부는 이 비행기가 어떤 구역들을 지나가는지, 지나가는 순서대로 알고 싶어 한다.

입력

입력의 첫 부분은 TidyLand의 국경을 나타낸다. 첫 줄에는 국경 다각형을 이루는 변의 개수인 정수 NN이 주어진다 (3≤N≤203 \le N \le 20). 이어지는 NN개의 줄에는 다각형 꼭짓점의 정수 좌표 XB,i,YB,iX_{B,i}, Y_{B,i}가 주어진다 (1≤XB,i,YB,i≤1001 \le X_{B,i}, Y_{B,i} \le 100, i=1…Ni = 1 \dots N). 꼭짓점은 시계 방향으로 차례로 나열된다.

입력의 둘째 부분은 관제소의 위치를 나타낸다. 먼저 한 줄에 관제소의 개수인 정수 MM이 주어진다 (1≤M≤201 \le M \le 20). 이어지는 MM개의 줄 중 ii번째 줄에는 ii번 관제소의 정수 좌표 XC,i,YC,iX_{C,i}, Y_{C,i}가 주어진다. 모든 관제소의 고도는 같다.

마지막 부분은 비행 경로를 나타낸다. 한 줄에 네 정수 X1,Y1,X2,Y2X_1, Y_1, X_2, Y_2가 주어지며(모두 00 이상 100100 이하), (X1,Y1)(X_1, Y_1)은 시작 좌표, (X2,Y2)(X_2, Y_2)는 끝 좌표이다. 두 점 모두 TidyLand 바깥에 있다.

출력

출력은 두 줄로 이루어진다. 첫째 줄에는 비행기가 지나가는 구역의 개수를 출력한다. 둘째 줄에는 비행기가 지나가는 구역들의 번호를, 비행기가 들어가는 순서대로 공백으로 구분하여 출력한다. 관제소(구역)는 입력에 주어진 순서대로 11번부터 MM번까지 번호가 매겨진다.

비행기가 TidyLand의 영공에 전혀 들어가지 않으면, 00 하나만 적힌 한 줄을 출력한다.

예제3

  1. 예제 1

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

    입력
    4
    1 1
    1 10
    10 10
    10 1
    2
    3 5
    7 5
    0 5 11 5
    
    예상 출력
    2
    1 2
    
  3. 예제 3

    입력
    4
    1 1
    1 10
    10 10
    10 1
    3
    2 5
    5 5
    8 5
    0 5 11 5
    
    예상 출력
    3
    1 2 3