곡예비행 2
시간 제한1초메모리 제한512 MB
N개의 체크포인트를 방문하는 순서를 정해, 중간 지점에서 경로가 꺾이는 각의 최솟값을 최대로 만드는 문제입니다.
문제
비타로는 곡예비행 대회에 나가 비행기를 조종한다. 비행기는 일정한 고도를 유지하며 좌표평면 위의 체크포인트들을 지난다. 체크포인트는 개이며 1번부터 번까지 번호가 붙어 있다. 체크포인트 ()의 좌표는 ()이다.
비행은 다음 순서로 진행한다. 모든 체크포인트를 정확히 한 번씩 지나야 한다.
- 비타로가 시작 체크포인트를 고른다. 비행기는 그 지점에서 출발한다.
- 다음 과정을 번 반복한다. 아직 고르지 않은 체크포인트 가운데 다음 체크포인트를 고른다. 비행기는 현재 체크포인트에서 다음 체크포인트까지 직선으로 날아간다.
- 비행기가 마지막 체크포인트에 도착하면 비행이 끝난다.
2번 과정에서 시작 체크포인트는 이미 고른 것으로 본다. 비행기는 한 체크포인트에서 다음 체크포인트까지 직선으로 날아야 한다. 곡선을 그리거나 비행 도중에 방향을 바꾸는 것은 금지된다.
비행 경로는 꺾은선이다. 비행기는 최대 번 방향을 바꾼다. 경로가 어떤 체크포인트에서 이루는 각이 작으면 그 지점의 방향 변화가 커져 비행에 실패할 위험이 있다.
그래서 비타로는 시작 체크포인트와 마지막 체크포인트를 제외한 개 체크포인트에서 경로가 이루는 최소 각을 최대한 크게 만들고자 한다. 좌표가 주어질 때, 경로의 최소 각이 가장 커지는 체크포인트 방문 순서를 구하시오.
입력
첫째 줄에 과 가 주어진다.
이어지는 개의 줄에는 각 체크포인트의 좌표 와 가 공백으로 구분되어 주어진다. 는 채점 프로그램이 사용하는 매개변수이다.
출력
줄에 걸쳐 출력한다. 번째 줄에는 경로에서 번째로 지나는 체크포인트의 번호 ()를 출력한다. 시작 체크포인트는 이다.
제한
- .
- ().
- ().
- .