A+를 향하여

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

요약
x분 자면 각 문제의 풀이 시간이 max(0, t_i - x)가 되고 남은 시간은 T - x분일 때, W점 이상을 얻는 최소 x를 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 이분 탐색, 완전 탐색, 정렬
정답자
아직 제출이 없습니다

문제

오늘은 컴퓨터 알고리즘 과목의 기말고사가 있는 날이다. 이번 시험 공부를 위해 전날 밤을 꼬박 새우고 시험장에 도착한 달구는, 시험 시작 시간이 되어 시험지를 받아들었다. 시험지에는 총 NN개의 문제가 있었으며, 시험 종료 시각은 앞으로 TT분 후였다. 시험지의 모든 문제를 빠르게 훑어본 결과 ii번 문제를 풀기 위해 걸리는 예상 시간 t_it\_i와 풀었을 때 얻을 수 있는 점수 w_iw\_i를 알아냈다. 또한, 이번 시험에서 최소 WW점 이상은 받아야 이번 학기에 A+를 받을 수 있다는 사실까지 깨달았다.

그러나 시험 문제를 풀려던 찰나, 전날 밤을 새운 달구에게 갑작스럽게 졸음이 쏟아졌다! 잠깐 자고 일어나면 더 효율적으로 문제를 풀 수 있으리라 생각한 달구는, 잠깐 자고 일어나서 문제를 풀고자 한다.

달구가 문제를 풀기 전에 정수 xx분 자고 일어나면, 각 문제를 해결하는 데 걸리는 시간이 정확히 xx분씩 줄어들어 ii번 문제를 푸는 데 걸리는 시간이 max⁡(0,t_i−x)\max(0, t\_i-x)가 된다고 한다. 단, 자는 시간도 시험 시간에 포함되므로, xx분을 자고 나면 문제를 풀 수 있는 시간은 (T−x)(T-x)분이 된다. 달구는 시험 시간인 TT분 이하의 시간 동안만 잘 수 있으며, 만약 자고 일어난 뒤 남은 시간이 00분이라도 소요 시간이 00분인 문제는 전부 풀 수 있다.

이번 학기 A+를 목표로 하는 달구는 반드시 이번 시험에서 WW점 이상을 받고자 한다. 또한, 시험장에서 너무 오래 자기에 눈치가 보인 달구는 WW점 이상을 받을 수 있다면 최소 시간만 자고 일어나서 시험 문제를 풀고자 한다. 달구가 이번 시험에서 WW점 이상을 받기 위해 잠깐 자야 하는 최소 시간을 구해주자.

입력

첫째 줄에 문제의 개수 NN, 시험 종료까지 남은 시간 TT, 목표 점수 WW가 공백으로 구분되어 정수로 주어진다. (1≤N,T≤2,5001\leq N, T\leq 2\\,500; 1≤W≤1091\leq W\leq 10^{9})

둘째 줄부터 NN개의 줄에 걸쳐 각 문제의 예상 풀이 시간 t_it\_i와 점수 w_iw\_i가 공백으로 구분되어 정수로 주어진다. (1≤t_i,w_i≤2,5001\leq t\_i, w\_i\leq 2\\,500)

출력

WW점 이상을 받기 위해 자야 하는 최소 시간을 출력한다. 만약 WW점 이상을 받을 수 없다면, -1을 출력한다.

예제3

  1. 예제 1

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

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

    입력
    1 10 10
    11 10
    
    예상 출력
    -1