아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

슈가 글라이더

시간 제한2초메모리 제한256 MB

요약
1번 나무 높이 X에서 출발해 나무를 오르내리고 활강하며 높이를 소모해 N번 나무 꼭대기까지 가는 최소 시간을 구합니다.
난이도

어려움10점 중 8점

유형
최단 경로, 힙
정답자
아직 제출이 없습니다

문제

슈가 글라이더 JOI가 살고 있는 숲에는 유칼리 나무가 NN그루 있고, 1부터 NN까지 번호가 붙어 있다. 나무 ii의 높이는 HiH_i미터이다.

JOI는 서로 직접 날아갈 수 있는 나무 쌍이 MM개 있고, 각 쌍을 오가는 데 걸리는 시간이 정해져 있다. 나무 사이를 날아갈 때는 매 초 지면에서 1미터 높이가 줄어든다. 현재 높이가 hh미터이고 이동에 tt초가 걸리면, 도착 높이는 h−th-t미터이다. h−th-t가 0 미만이거나 목적 나무 높이보다 크면 날아갈 수 없다.

JOI는 나무 옆면을 오내려 지면에서 0미터부터 현재 나무 높이까지 높이를 바꿀 수 있다. 높이를 1미터 바꾸는 데 1초가 걸린다.

JOI는 나무 1의 높이 XX미터 지점에서 나무 NN 꼭대기(높이 HNH_N)로 가려 한다. 걸리는 최소 시간을 구하는 프로그램을 작성한다.

입력

표준 입력에서 읽는다.

  • 1행: 정수 NN, MM, XX (나무 수, 직접 이동 가능한 쌍 수, 시작 높이)
  • 다음 NN행: 나무 ii의 높이 HiH_i
  • 다음 MM행: AjA_j, BjB_j, TjT_j (나무 AjA_j와 BjB_j를 TjT_j초로 오갈 수 있음)

출력

나무 1 높이 XX에서 나무 NN 꼭대기까지 가는 최소 시간(초)을 한 줄에 출력한다. 불가능하면 −1-1을 출력한다.

제한

  • 2≤N≤100 0002 \le N \le 100\,000
  • 1≤M≤300 0001 \le M \le 300\,000
  • 1≤Hi≤1 000 000 0001 \le H_i \le 1\,000\,000\,000
  • 1≤Tj≤1 000 000 0001 \le T_j \le 1\,000\,000\,000
  • 0≤X≤H10 \le X \le H_1

예제3

  1. 예제 1

    입력
    5 5 0
    50
    100
    25
    30
    10
    1 2 10
    2 5 50
    2 4 20
    4 3 1
    5 4 20
    
    예상 출력
    110
    
  2. 예제 2

    입력
    2 1 0
    1
    1
    1 2 100
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    4 3 30
    50
    10
    20
    50
    1 2 10
    2 3 10
    3 4 10
    
    예상 출력
    100