만드는 중입니다

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

효율적인 슬랩스톤 재배치

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

요약
기존 슬래브스톤 n개를 최소 이동 거리로 옮겨, 서로 d칸 이상 떨어뜨린 채 길이 x의 새 슬래브스톤을 놓을 자리를 만듭니다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 구현
정답자
아직 제출이 없습니다

문제

Barbara의 정원은 길고 좁으며, 한 줄로 늘어선 mm개의 같은 크기 구역으로 나뉘어 있다. 친구 Babara가 생일 선물로 슬랩스톤 nn개를 주었다. Barbara는 이 슬랩스톤을 정원에 놓고 매일 돌에서 돌로 건너다니며 즐긴다. ii번째 슬랩스톤은 lil_i번째 구역부터 rir_i번째 구역까지를 빈틈없이 차지한다. 슬랩스톤끼리는 겹치지 않으며, 어떤 두 슬랩스톤 사이에든 최소 dd개의 빈 구역이 있다.

Barbara가 최근 연속된 xx개의 구역을 차지하는 슬랩스톤을 하나 더 샀다. 그녀는 기존 슬랩스톤을 정원 안에서 옮긴 뒤 새 슬랩스톤을 정원 어딘가에 놓는다. 이동 후 슬랩스톤은 서로 겹치지 않아야 하며, 어떤 두 슬랩스톤 사이에도 최소 dd개의 빈 구역이 있어야 한다. 재배치하는 도중에도 슬랩스톤은 겹치면 안 된다.

슬랩스톤 하나를 인접한 구역으로 옮기는 데 1분이 걸린다. 예를 들어 위 과정은 4분이 걸린다. Barbara는 다른 일에 시간을 쓸 수 있도록 슬랩스톤을 재배치하는 데 드는 총 시간의 최소값을 알고 싶어 한다.

입력

첫 줄에 정수 nn, mm, dd, xx가 주어진다. 이어서 nn개의 줄에 각각 정수 lil_i와 rir_i가 주어진다.

출력

새 슬랩스톤을 정원에 놓을 수 있도록 슬랩스톤을 재배치하는 데 드는 총 시간의 최소값(분)을 출력한다. 슬랩스톤을 어떻게 재배치해도 새 슬랩스톤을 놓을 수 없다면 −1-1을 출력한다.

제한

  • 1≤n≤20001 \le n \le 2000
  • 1≤d≤m≤1091 \le d \le m \le 10^9
  • 1≤x≤m≤1091 \le x \le m \le 10^9
  • i∈{1,2,…,n}i \in \{1, 2, \dots, n\}에 대해 1≤li≤ri≤m1 \le l_i \le r_i \le m
  • i∈{1,2,…,n−1}i \in \{1, 2, \dots, n-1\}에 대해 ri+d+1≤li+1r_i + d + 1 \le l_{i+1}. 슬랩스톤은 왼쪽에서 오른쪽 순서로 주어진다.

예제3

  1. 예제 1

    입력
    3 15 2 3
    2 4
    7 7
    12 13
    
    예상 출력
    4
    
  2. 예제 2

    입력
    5 100 1 75
    2 3
    5 7
    11 13
    17 19
    23 29
    
    예상 출력
    9
    
  3. 예제 3

    입력
    1 100 99 1
    1 1
    
    예상 출력
    -1