사탕 가게

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

요약
각 사탕을 무한히 살 수 있을 때 주어진 예산으로 얻을 수 있는 최대 총 열량을 구한다. 가격과 예산은 소수점 둘째 자리까지 주어진다.
난이도

보통10점 중 6점

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

문제

상근이와 선영이가 함께 길을 걷다가 사탕 가게 앞을 지나게 되었다. 상근이가 갑자기 사탕이 건강에 얼마나 나쁜지 늘어놓기 시작하자, 짜증이 난 선영이는 "누가 더 건강을 해칠 수 있는지" 내기를 하자고 제안했고 상근이는 그 자리에서 받아들였다.

두 사람은 똑같은 금액을 가지고 가게에 들어가 사탕을 산다. 구매한 사탕의 총 칼로리가 더 큰 사람이 내기에서 이긴다.

상근이는 화장실에 다녀오겠다는 핑계를 대고 나와 노트북으로 가게의 시스템에 접속했다. 이 시스템에는 현재 판매 중인 모든 사탕의 가격과 칼로리가 들어 있다. 각 사탕의 재고는 사실상 무제한이라 같은 종류를 원하는 만큼 여러 개 살 수 있으며, 사탕은 쪼갤 수 없으므로 종류별 개수는 항상 0 이상의 정수여야 한다.

가게에 있는 모든 사탕의 가격과 칼로리가 주어졌을 때, 가진 돈으로 살 수 있는 사탕의 총 칼로리의 최댓값을 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫째 줄에는 가게에 있는 사탕 종류의 수 nn과 상근이가 가진 돈 mm이 주어진다. (1≤n≤5 0001 \le n \le 5\,000, 0.01≤m≤100.000.01 \le m \le 100.00) mm은 항상 소수점 아래 둘째 자리까지 주어진다.

이어지는 nn개의 줄에는 각 사탕의 칼로리 cc와 가격 pp가 주어진다. (1≤c≤5 0001 \le c \le 5\,000, 0.01≤p≤100.000.01 \le p \le 100.00) cc는 항상 정수이고, pp는 항상 소수점 아래 둘째 자리까지 주어진다.

입력의 마지막 줄에는 0 0.00이 주어지며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다, 상근이가 가진 돈 mm으로 살 수 있는 사탕의 총 칼로리의 최댓값을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    2 8.00
    700 7.00
    199 2.00
    3 8.00
    700 7.00
    299 3.00
    499 5.00
    0 0.00
    
    예상 출력
    796
    798