정해진 순회 일정과 편도 및 왕복 항공권 가격이 주어질 때, 모든 구간을 이동하는 최소 비용을 구한다.
보통7그래프그리디해시맵아직 제출이 없습니다시간 제한5초메모리 제한512 MB이반은 재즈 밴드와 함께 대규모 유럽 순회공연을 계획하고 있다. 유럽에는 도시가 n개 있고, 각 도시에는 1부터 n까지 번호가 붙어 있다. 이반은 도시 a1,a2,…,ad에서 정확히 이 순서대로 공연을 d번 연다. 연속한 두 공연이 같은 도시에서 열리는 일은 없으며(ai=ai+1) 어떤 도시는 여러 번 방문할 수도 있다. 투어는 시작한 도시에서 끝난다(a1=ad).
이반은 도시 ai에서 ai+1로 갈 때 항상 직항편을 탄다. 그래도 항공권을 잘 골라 사서 돈을 아끼려 한다. 항공사는 수요와 공급에 따라 요금을 정하므로 같은 두 도시 사이에서 편도 항공권이 왕복 항공권보다 비쌀 수도 있다.
살 수 있는 항공권은 두 종류다.
살 수 있는 항공권 요금 목록이 주어질 때, 이반이 투어를 마치려면 항공권에 최소 얼마를 써야 하는지 구하라. 각 요금의 항공권은 원하는 만큼 살 수 있다. 다시 말해 이반은 모든 i=1,2,…,d−1에 대해 ai에서 ai+1로 직항편을 타야 한다. 주어진 요금으로 투어를 마칠 수 있다고 가정해도 된다.
첫째 줄에 유럽의 도시 수 n과 공연 수 d가 주어진다. (2≤n,d≤300000)
둘째 줄에 투어 일정 a1,a2,…,ad가 주어진다. (1≤ai≤n, ai=ai+1, a1=ad)
셋째 줄에 항공권 요금의 수 m이 주어진다. (3≤m≤300000) 다음 m개 줄 가운데 k번째 줄에는 k번째 요금을 나타내는 네 토큰 sk, dk, tk, pk가 주어진다.
O 또는 R이며, 각각 편도 항공권과 왕복 항공권을 뜻한다.이반이 계획한 투어를 마칠 수 있도록 항공권을 사는 데 필요한 최소 금액을 출력한다.