밤 노점 (Night Market)

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

요약
번호가 증가하는 순서로 겹치지 않게 정수 시작 시각에 체험하되 시각 S를 어떤 체험 구간의 내부에도 넣지 않고, 얻는 재미의 합을 최대로 만든다.
난이도

보통10점 중 7점

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

문제

태로는 여름 축제에 놀러 가기로 했다.

축제가 열리는 장소로 가는 길에는 밤 노점이 NN개 늘어서 있다. 각 노점에는 11부터 NN까지 번호가 차례로 매겨져 있으며, 노점에서 놀 때 얻는 즐거움과 노는 데 걸리는 시간이 각각 정수로 정해져 있다. 노점 ii에서 놀 때 얻는 즐거움은 AiA_i이고, 노는 데 걸리는 시간은 BiB_i이다.

축제의 하이라이트로 불꽃놀이가 있는데, 시각 SS에 가장 큰 불꽃이 터진다. 태로는 이 가장 큰 불꽃을 꼭 보고 싶어 한다.

태로는 노점과 불꽃을 모두 즐기기 위해, 축제에 도착하는 시각 00부터 축제가 끝나는 시각 TT까지의 일정을 세우려고 한다.

태로는 노점 중에서 kk개 (1≤k≤N)(1 \le k \le N)를 골라 각각 방문할 시각을 정수로 정한다. 같은 노점을 두 번 고를 수는 없다. 고른 노점의 번호를 작은 순서대로 y1,y2,…,yky_1, y_2, \dots, y_k라 하고, 노점 yiy_i를 방문하는 시각을 xyix_{y_i}라 하면, 태로는 노점 yiy_i에서 시각 xyix_{y_i}부터 시각 xyi+Byix_{y_i} + B_{y_i}까지 논다.

태로는 노점 번호가 작은 순서대로 놀며, 두 노점에서 동시에 놀 수는 없다. 노점 사이를 이동하는 데 걸리는 시간은 무시할 수 있다.

시각 TT를 넘기면 축제가 끝나므로 노점에서 놀 수 없다. 또한 노점에서 노는 동안에는 불꽃을 볼 수 없다. 다만 시각 SS가 어떤 노점에서 놀기 시작하는 시각이거나 놀이를 끝내는 시각과 정확히 같다면, 태로는 그 불꽃을 볼 수 있다.

즉, 일정은 다음 조건을 모두 만족해야 한다.

  • y1<y2<⋯<yky_1 < y_2 < \dots < y_k
  • xy1,xy2,…,xykx_{y_1}, x_{y_2}, \dots, x_{y_k}는 정수이다.
  • 0≤xy1<xy1+By1≤xy2<xy2+By2≤⋯≤xyk<xyk+Byk≤T0 \le x_{y_1} < x_{y_1} + B_{y_1} \le x_{y_2} < x_{y_2} + B_{y_2} \le \dots \le x_{y_k} < x_{y_k} + B_{y_k} \le T
  • xyi<S<xyi+Byix_{y_i} < S < x_{y_i} + B_{y_i}를 만족하는 ii는 존재하지 않는다.

고른 노점의 즐거움 Ay1,Ay2,…,AykA_{y_1}, A_{y_2}, \dots, A_{y_k}의 합을 MM이라 하자. 태로는 MM이 가능한 한 커지도록 일정을 세우고 싶다.

NN개 노점의 정보와 시각 SS, TT가 주어질 때, MM의 최댓값을 구하는 프로그램을 작성하여라.

입력

표준 입력으로 다음 정보가 주어진다.

첫째 줄에는 정수 NN, TT, SS가 공백으로 구분되어 주어진다. 이는 노점의 수가 NN개, 축제가 끝나는 시각이 TT, 가장 큰 불꽃이 터지는 시각이 SS임을 뜻한다.

이어지는 NN개의 줄에는 노점의 정보가 주어진다. i+1i + 1번째 줄 (1≤i≤N)(1 \le i \le N)에는 정수 AiA_i, BiB_i가 공백으로 구분되어 주어지며, 이는 노점 ii에서 놀 때 얻는 즐거움이 AiA_i, 노는 데 걸리는 시간이 BiB_i임을 뜻한다.

모든 입력에 대해, 하나 이상의 일정을 세울 수 있음이 보장된다.

출력

표준 출력으로 MM의 최댓값을 나타내는 정수 하나를 한 줄에 출력한다.

제한

  • 1≤N≤30001 \le N \le 3000 — 노점의 수
  • 1≤T≤30001 \le T \le 3000 — 축제가 끝나는 시각
  • 0≤S≤T0 \le S \le T — 가장 큰 불꽃이 터지는 시각
  • 0≤Ai≤1000000 \le A_i \le 100000 — 노점 ii에서 놀 때 얻는 즐거움
  • 1≤Bi≤30001 \le B_i \le 3000 — 노점 ii에서 노는 데 걸리는 시간

예제 설명

첫 번째 예제에서는 다음과 같이 일정을 세우면 MM을 최대로 만들 수 있다.

  • 노점 11을 시각 00에 방문하여 시각 00부터 99까지 논다.
  • 노점 22를 시각 99에 방문하여 시각 99부터 1313까지 논다.
  • 노점 44를 시각 1414에 방문하여 시각 1414부터 1717까지 논다.

불꽃은 시각 S=14S = 14에 터지는데, 이 시각은 노점 44에서 놀기 시작하는 시각과 정확히 같으므로 태로는 불꽃을 볼 수 있다. 이때 M=8+2+6=16M = 8 + 2 + 6 = 16이다.

예제5

  1. 예제 1

    입력
    5 20 14
    8 9
    2 4
    7 13
    6 3
    5 8
    
    예상 출력
    16
    
  2. 예제 2

    입력
    1 5 2
    7 3
    
    예상 출력
    7
    
  3. 예제 3

    입력
    3 10 0
    5 4
    6 3
    4 2
    
    예상 출력
    15
    
  4. 예제 4

    입력
    2 10 4
    5 4
    6 6
    
    예상 출력
    11
    
  5. 예제 5

    입력
    5 10 5
    3 2
    3 2
    3 2
    3 2
    3 2
    
    예상 출력
    12