만드는 중입니다

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

복슬복슬 여우꼬리

면접 대비

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

요약
보송한 시간대 목록과 T시간씩 유지되는 마법을 최대 K번 쓸 때, 0시부터 M시 사이에서 이어지는 보송한 시간의 최댓값을 구합니다.
난이도

보통10점 중 5점

유형
슬라이딩 윈도우, 배열, 그리디
정답자
아직 제출이 없습니다

문제

일에 지친 한별이를 위로하려고 천계에서 여우신이 내려왔다. 여우신의 꼬리는 복슬복슬해서 가만히 안고만 있어도 치유가 된다고 한다.

그런데 여우 꼬리는 특정 시간대에만 복슬복슬하고, 그 밖의 시간에는 푸석푸석해진다. 그래서 복슬복슬 마법으로 꼬리를 다시 복슬복슬하게 만들어야 한다.

여우신은 00시부터 MM시까지 총 MM시간 동안 지상에 내려와 있다. 마법은 총 KK번 쓸 수 있고, 한 번 쓰면 TT시간 동안 복슬복슬한 상태가 유지된다. 마법을 KK번 이내로 사용해서 한별이가 최대한 연속으로 복슬복슬한 상태에 있을 수 있는 시간을 구해 주세요.

복슬복슬 마법의 지속시간이 끝나기 전에 복슬복슬한 시간대가 시작되면, 그 시간대에 들어간 시점에서 마법은 더 이상 적용되지 않는다. 예를 들어 복슬복슬한 시간대가 44시부터 66시까지이고 33시에 77시간짜리 마법을 썼다면, 이 마법은 33시부터 44시까지만 적용된다. 또한 복슬복슬한 시간대에 마법을 쓰면 그 마법은 즉시 취소된다.

마법을 쓰는 도중에 여우신이 천계로 돌아가야 할 시간이 되면, 그 시점에 마법은 취소된다. 예를 들어 여우신이 99시에 복귀해야 하는데 77시에 33시간짜리 마법을 썼다면, 이 마법은 77시부터 99시까지만 적용된다.

입력

첫 번째 줄에 복슬복슬한 시간대의 수 NN, 문제에서 설명한 MM, KK, TT가 공백으로 구분되어 주어진다. (1≤N≤100 0001 \leq N \leq 100\,000, 1≤M≤10 000 0001 \leq M \leq 10\,000\,000, 1≤K≤100 0001 \leq K \leq 100\,000, 1≤T≤10 000 0001 \leq T \leq 10\,000\,000)

두 번째 줄부터 N+1N+1번째 줄까지 복슬복슬한 시간대 XiX_i, YiY_i가 공백으로 구분되어 주어진다. (0≤Xi<Yi≤M0 \leq X_i < Y_i \leq M)

복슬복슬한 시간대는 서로 겹치지 않고 시간 순서대로 주어지며, 이전 시간대가 끝나는 시점에 다음 시간대가 시작하는 경우는 주어지지 않는다.

출력

한별이가 최대한 연속으로 복슬복슬할 수 있는 시간을 출력한다.

예제2

  1. 예제 1

    입력
    3 25 2 4
    1 5
    10 13
    14 17
    
    예상 출력
    12
    
  2. 예제 2

    입력
    3 55 6 4
    9 16
    23 25
    40 44
    
    예상 출력
    35