등불
시간 제한3초메모리 제한1024 MB
각 등불이 자기 봉우리에서 작동할 때, 존이 항상 작동하는 등불을 가진 채 모든 봉우리를 방문하는 최소 비용을 구합니다.
문제
농부 존은 소 떼를 데리고 알프스로 하이킹을 떠났습니다. 밤이 되어 하이킹은 끝났습니다. 하지만 소 몇 마리가 산맥 곳곳에 갇혀 있어서, 존이 그 소들을 모두 구해야 합니다.
산맥은 수직 2차원 평면 위의 개 점으로 나타냅니다. 이 점들을 봉우리라고 부릅니다. 봉우리는 번부터 번까지 순서대로 번호가 매겨져 있습니다. 봉우리 의 좌표는 이고, 는 봉우리 의 고도입니다. 은 부터 까지의 순열입니다. 즉 각 에 대해 를 만족하는 이 정확히 하나 있습니다.
인 각 에 대해, 봉우리 와 은 직선 선분으로 이어져 있습니다.
문제
밤이라서 존은 작동하는 등불을 적어도 하나 가지고 있어야만 걸을 수 있습니다. 판매 중인 등불은 개입니다. 등불 는 봉우리 에서 프랑에 살 수 있습니다. 이 등불은 존의 고도가 범위 안에 있을 때만 작동합니다. 고도가 보다 작거나 보다 크면 등불 는 꺼집니다. 등불은 범위를 벗어난다고 고장 나지 않습니다. 존이 범위 안의 고도로 돌아오면 다시 켜집니다.
존이 봉우리 에 있을 때 할 수 있는 행동은 다음 세 가지 중 하나입니다.
- 봉우리 에서 살 수 있는 등불 중 하나를 구매합니다. 한 번 산 등불은 계속 쓸 수 있습니다.
- 이면 봉우리 로 걸어갑니다.
- 이면 봉우리 로 걸어갑니다.
존은 작동하는 등불 없이 움직여서는 안 됩니다. 인접한 두 봉우리 사이는 걷는 모든 순간에 이미 가진 등불 중 하나 이상이 작동할 때만 걸을 수 있습니다. 걷는 내내 같은 등불일 필요는 없습니다.
예를 들어 존이 고도 인 봉우리에 있고, 고도 인 인접 봉우리로 가려고 합니다. 존이 과 구간에서 작동하는 등불을 가지고 있다면 걸을 수 있습니다. 하지만 과 구간에서만 작동하는 등불을 가지고 있다면, 고도 에서 작동하는 등불이 없으므로 걸을 수 없습니다.
각 에 대해 이면, 존이 봉우리 에서 등불 를 먼저 사고 탐색을 시작한다고 합시다. 그다음 위의 세 행동만으로 개 봉우리를 모두 최소 한 번씩 방문해야 합니다. 이런 각 에 대해, 산맥 전체를 탐색하기 위해 존이 써야 하는 최소 금액을 구하십시오. 비용에는 등불 의 구매 금액이 포함됩니다.
입력
첫째 줄에 과 가 주어집니다(, ). 둘째 줄에는 이 주어집니다(). 이 값들은 부터 까지의 순열입니다.
다음 개 줄 중 번째 줄에는 네 정수 , , , 가 주어집니다(, , ). 각각 등불 를 살 수 있는 봉우리, 가격, 작동 고도 범위입니다.
출력
각 에 대해 한 줄을 출력합니다.
- 가 범위 밖이면 을 출력합니다.
- 그렇지 않은데 등불 를 먼저 산 뒤 산맥 전체를 탐색할 수 없으면 을 출력합니다.
- 그 밖의 경우에는 존이 등불 를 먼저 사고 산맥 전체를 탐색하는 데 드는 최소 금액을 출력합니다.
힌트
존이 봉우리 에서 등불 을 먼저 사면, 다음과 같이 움직일 수 있습니다.
- 왼쪽으로 두 번 걸어 봉우리 로 갑니다.
- 등불 를 삽니다.
- 오른쪽으로 걸어 봉우리 로 갑니다.
- 등불 을 삽니다.
- 오른쪽으로 걸어 봉우리 로 갑니다.
이 시점에 존은 모든 봉우리를 적어도 한 번 방문했고, 총 프랑을 썼습니다.
등불 , , 은 판매 봉우리의 고도에서 작동하지 않으므로 처음 살 수 없습니다. 이 등불들의 답은 모두 입니다.
등불 이나 로 시작하면 다른 등불을 더 사지 않고도 모든 봉우리를 방문할 수 있습니다.
등불 로 시작하면 나중에 등불 도 사야 합니다.
등불 로 시작하면 봉우리 에서 막힙니다. 등불 도 추가로 사더라도, 봉우리 에서 봉우리 으로는 걸어갈 수 없습니다.