N개의 점과 L/R로 이루어진 회전 문자열이 주어질 때, 마지막 점을 기준으로 남은 점 중 가장 왼쪽이나 오른쪽에 있는 점을 골라 자기교차 없는 경로를 만든다.
보통6기하그리디정렬구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB
그림의 경로는 (4, 4)에서 출발해 (2, 5)로 간다. 여기서 오른쪽으로 꺾어 (1, 6)으로 가고, 다시 왼쪽으로 크게 꺾어 (5, 0)으로 간 다음, 한 번 더 왼쪽으로 꺾어 (4, 2)에서 끝난다. 왼쪽 회전을 L, 오른쪽 회전을 R로 적으면 이 경로의 회전 방향은 차례대로 RLL이다. 경로는 자기 자신과 교차하지 않는다. 선분이 만나는 곳은 경로를 잇는 점뿐이다.
이제 반대 문제를 푼다. 점 N개가 임의의 순서로 주어진다. 모든 점을 정확히 한 번씩 지나면서 경로가 자기 자신과 교차하지 않고, 회전 방향을 이어 적은 문자열이 주어진 문자열과 같아지는 순서를 찾아야 한다. 예를 들어 점 (2, 5), (1, 6), (4, 4), (5, 0), (4, 2)가 이 순서로 주어지고 회전 문자열이 RLL이면, 순서 3 1 2 4 5가 그림의 경로를 나타낸다. 세 번째 점 (4, 4)에서 시작해 첫 번째, 두 번째, 네 번째, 다섯 번째 점을 차례로 지난다.
연속한 세 점 a, b, c에 대해 b에서의 회전 방향은 외적 (b−a)×(c−b)의 부호로 정한다. 부호가 양수면 L, 음수면 R이다. 한 직선 위에 놓인 세 점은 입력에 나오지 않으므로 부호가 0이 되는 일은 없다.
같은 문자열을 만족하는 순서는 보통 여러 개다. 위의 3 1 2 4 5도 그중 하나이고, 아래 출력 규칙이 고르는 답과 다를 수 있다.
첫째 줄에 점의 개수 N이 주어진다 (3≤N≤50). 다음 N개 줄에 각 점의 좌표 xi와 yi가 공백으로 구분되어 주어진다 (0≤xi,yi≤1000). 모든 점은 서로 다르고, 한 직선 위에 놓인 세 점은 없다. 마지막 줄에 L과 R로만 이루어진 길이 N−2의 문자열이 주어진다.
다음 절차가 만드는 순열을 한 줄에 출력한다. 점에는 입력에 주어진 순서대로 1부터 N까지 번호를 붙이고, 수 사이는 공백 하나로 구분한다.
이 절차로 만든 경로는 자기 자신과 교차하지 않고, 회전 방향 문자열도 주어진 문자열과 같다.