만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

등불

시간 제한3초메모리 제한1024 MB

요약
각 등불이 자기 봉우리에서 작동할 때, 존이 항상 작동하는 등불을 가진 채 모든 봉우리를 방문하는 최소 비용을 구합니다.
난이도

어려움10점 중 8점

유형
그래프, 최단 경로, 그리디
정답자
아직 제출이 없습니다

문제

농부 존은 소 떼를 데리고 알프스로 하이킹을 떠났습니다. 밤이 되어 하이킹은 끝났습니다. 하지만 소 몇 마리가 산맥 곳곳에 갇혀 있어서, 존이 그 소들을 모두 구해야 합니다.

산맥은 수직 2차원 평면 위의 nn개 점으로 나타냅니다. 이 점들을 봉우리라고 부릅니다. 봉우리는 11번부터 nn번까지 순서대로 번호가 매겨져 있습니다. 봉우리 ii의 좌표는 (i,hi)(i, h_i)이고, hih_i는 봉우리 ii의 고도입니다. h1,h2,…,hnh_1, h_2, \dots, h_n은 11부터 nn까지의 순열입니다. 즉 각 j=1,…,nj = 1, \dots, n에 대해 hi=jh_i = j를 만족하는 i∈{1,…,n}i \in \{1, \dots, n\}이 정확히 하나 있습니다.

1≤i<n1 \le i < n인 각 ii에 대해, 봉우리 ii와 i+1i+1은 직선 선분으로 이어져 있습니다.

문제

밤이라서 존은 작동하는 등불을 적어도 하나 가지고 있어야만 걸을 수 있습니다. 판매 중인 등불은 kk개입니다. 등불 jj는 봉우리 pjp_j에서 cjc_j프랑에 살 수 있습니다. 이 등불은 존의 고도가 [aj,bj][a_j, b_j] 범위 안에 있을 때만 작동합니다. 고도가 aja_j보다 작거나 bjb_j보다 크면 등불 jj는 꺼집니다. 등불은 범위를 벗어난다고 고장 나지 않습니다. 존이 범위 안의 고도로 돌아오면 다시 켜집니다.

존이 봉우리 pp에 있을 때 할 수 있는 행동은 다음 세 가지 중 하나입니다.

  • 봉우리 pp에서 살 수 있는 등불 중 하나를 구매합니다. 한 번 산 등불은 계속 쓸 수 있습니다.
  • p>1p > 1이면 봉우리 p−1p-1로 걸어갑니다.
  • p<np < n이면 봉우리 p+1p+1로 걸어갑니다.

존은 작동하는 등불 없이 움직여서는 안 됩니다. 인접한 두 봉우리 사이는 걷는 모든 순간에 이미 가진 등불 중 하나 이상이 작동할 때만 걸을 수 있습니다. 걷는 내내 같은 등불일 필요는 없습니다.

예를 들어 존이 고도 44인 봉우리에 있고, 고도 11인 인접 봉우리로 가려고 합니다. 존이 [1,3][1, 3]과 [3,4][3, 4] 구간에서 작동하는 등불을 가지고 있다면 걸을 수 있습니다. 하지만 [1,1][1, 1]과 [2,5][2, 5] 구간에서만 작동하는 등불을 가지고 있다면, 고도 1.471.47에서 작동하는 등불이 없으므로 걸을 수 없습니다.

각 jj에 대해 aj≤hpj≤bja_j \le h_{p_j} \le b_j이면, 존이 봉우리 pjp_j에서 등불 jj를 먼저 사고 탐색을 시작한다고 합시다. 그다음 위의 세 행동만으로 nn개 봉우리를 모두 최소 한 번씩 방문해야 합니다. 이런 각 jj에 대해, 산맥 전체를 탐색하기 위해 존이 써야 하는 최소 금액을 구하십시오. 비용에는 등불 jj의 구매 금액이 포함됩니다.

입력

첫째 줄에 nn과 kk가 주어집니다(1≤n≤20001 \le n \le 2000, 1≤k≤20001 \le k \le 2000). 둘째 줄에는 h1,h2,…,hnh_1, h_2, \dots, h_n이 주어집니다(1≤hi≤n1 \le h_i \le n). 이 값들은 11부터 nn까지의 순열입니다.

다음 kk개 줄 중 jj번째 줄에는 네 정수 pjp_j, cjc_j, aja_j, bjb_j가 주어집니다(1≤pj≤n1 \le p_j \le n, 1≤cj≤1061 \le c_j \le 10^6, 1≤aj≤bj≤n1 \le a_j \le b_j \le n). 각각 등불 jj를 살 수 있는 봉우리, 가격, 작동 고도 범위입니다.

출력

각 jj에 대해 한 줄을 출력합니다.

  • hpjh_{p_j}가 [aj,bj][a_j, b_j] 범위 밖이면 −1-1을 출력합니다.
  • 그렇지 않은데 등불 jj를 먼저 산 뒤 산맥 전체를 탐색할 수 없으면 −1-1을 출력합니다.
  • 그 밖의 경우에는 존이 등불 jj를 먼저 사고 산맥 전체를 탐색하는 데 드는 최소 금액을 출력합니다.

힌트

존이 봉우리 33에서 등불 11을 먼저 사면, 다음과 같이 움직일 수 있습니다.

  • 왼쪽으로 두 번 걸어 봉우리 11로 갑니다.
  • 등불 22를 삽니다.
  • 오른쪽으로 걸어 봉우리 44로 갑니다.
  • 등불 33을 삽니다.
  • 오른쪽으로 걸어 봉우리 77로 갑니다.

이 시점에 존은 모든 봉우리를 적어도 한 번 방문했고, 총 1+2+4=71 + 2 + 4 = 7프랑을 썼습니다.

등불 22, 66, 77은 판매 봉우리의 고도에서 작동하지 않으므로 처음 살 수 없습니다. 이 등불들의 답은 모두 −1-1입니다.

등불 33이나 44로 시작하면 다른 등불을 더 사지 않고도 모든 봉우리를 방문할 수 있습니다.

등불 55로 시작하면 나중에 등불 44도 사야 합니다.

등불 88로 시작하면 봉우리 77에서 막힙니다. 등불 77도 추가로 사더라도, 봉우리 77에서 봉우리 66으로는 걸어갈 수 없습니다.

예제1

  1. 예제 1

    입력
    7 8
    4 2 3 1 5 6 7
    3 1 2 4
    1 2 1 3
    4 4 1 7
    6 10 1 7
    6 20 6 6
    6 30 5 5
    7 40 1 6
    7 50 7 7
    
    예상 출력
    7
    -1
    4
    10
    30
    -1
    -1
    -1