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

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

프로그래밍 대회에서 지는 법

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

요약
T분 안에 끝낼 수 있는 문제만 순서대로 풀어가며 얻는 점수를 최소로 만드는 순서를 찾는다.
난이도

보통10점 중 6점

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

문제

Gennady는 경쟁 프로그래밍 최강자다. 어떤 문제든 풀 수 있어서 대회에서 한 번도 진 적이 없다. 그런데 모든 대회에서 우승하는 것도 재미가 없다고 생각한 그는 오늘은 일부러 한 대회에서 지기로 마음먹었다.

그렇다고 해서 문제를 풀지 않고 버리는 것은 비신사적인 행동이라 할 수 없다. 그래서 그는 그냥 대회에서 얻는 총점을 최소로 만드는 나쁜 전략을 선택하기로 했다.

대회에는 11번부터 nn번까지 번호가 붙은 nn개의 문제가 있다. 참가자가 ii번 문제를 풀면 p_ip\_i점을 얻는다. Gennady는 모든 문제를 읽고 각 문제에 대한 풀이를 떠올려 두었다. ii번 문제의 풀이를 작성하는 데 정확히 t_it\_i분이 걸린다는 것도 알고 있다. 이제 남은 일은 문제 풀이를 작성할 순서를 정하는 것이다. Gennady는 대회가 끝날 때까지 TT분이 남아 있다는 것을 알아차렸다.

Gennady는 다음과 같은 전략을 쓰려고 한다. 아직 풀지 않은 문제 하나를 골라 그 풀이를 작성한다. 시간 안에 끝낼 수 없는 문제는 절대 고르지 않는다. 풀이가 완성되면 제출해서 그 문제의 p_ip\_i점을 받는다. 제출과 채점에는 시간이 걸리지 않는다. 그런 다음 다른 문제로 넘어간다. 남은 문제 중 시간 안에 풀 수 있는 것이 하나도 없다고 판단하면 코딩을 멈춘다.

이제 Gennady는 대회에서 얻는 점수를 최소로 만드는 문제 풀이 순서를 정하려고 한다. 위 규칙을 따를 때 그가 얻을 수 있는 최소 점수를 구해 보자.

입력

첫째 줄에 문제의 수와 대회가 끝날 때까지 남은 시간을 나타내는 두 정수 nn과 TT가 주어진다 (1≤n,T≤20001 \leq n, T \leq 2000).

다음 nn개 줄에 문제에 대한 정보가 주어진다. ii번째 줄에는 Gennady가 이 문제를 푸는 데 필요한 시간과 이 문제가 주는 점수를 나타내는 두 정수 t_it\_i, p_ip\_i가 주어진다 (1≤t_i≤20001 \leq t\_i \leq 2000, 1≤p_i≤1061 \leq p\_i \leq 10^6).

출력

Gennady가 얻을 수 있는 최소 점수를 출력한다.

예제2

  1. 예제 1

    입력
    4 9
    4 2
    4 5
    3 4
    2 10
    
    예상 출력
    7
    
  2. 예제 2

    입력
    1 1
    2 1
    
    예상 출력
    0