각 요리는 가장 저렴하게 만드는 방법의 비용과 그에 따르는 명성을 가진다. 총비용이 B 이하가 되도록 요리를 골라 명성 합을 최대화하고, 그 최대 명성을 얻는 최소 비용을 함께 출력한다.
보통7동적 계획법그래프최단 경로정렬아직 제출이 없습니다시간 제한4초메모리 제한512 MB
미슐랭 별을 노리는 어느 식당의 주방장이 심사원에게 내놓을 대표 요리를 고르려고 한다. 고른 요리의 총비용에 쓸 수 있는 예산은 B이고, 주방장은 그 안에서 내놓는 요리의 총명성을 최대로 만들고 싶어 한다.
주방장은 요리법 목록을 비용, 재료와 함께 관리한다. 요리법 하나는 바탕 요리에 재료 하나를 더해 파생 요리를 만든다. 요리법에는 바탕 요리의 비용에 더해지는 비용과 바탕 요리의 명성에 더해지는 명성이 함께 적혀 있다. 명성은 주방장이 직접 정한 단위인 명성 단위로 센다.
피자 요리법 목록은 다음과 같이 생겼다.
pizza_tomato pizza_base tomato 1 2
pizza_classic pizza_tomato cheese 5 5
pizza_base는 기본 요리다. 이 요리를 만드는 요리법이 없으므로 비용도 0이고 명성도 0이다. pizza_base에 tomato를 더하면 비용 1유로와 명성 2를 얹어 pizza_tomato가 된다. pizza_tomato에 cheese를 더하면 비용 5와 명성 5가 더 붙어 pizza_classic이 되므로, pizza_classic의 총비용은 6이고 총명성은 7이다.
대표 요리 선택에는 pizza_tomato와 pizza_classic을 함께 넣어도 된다. 이 선택의 총명성은 9, 총비용은 7이다.
요리법 목록과 예산 B가 주어진다. 총비용을 B 이하로 유지하면서 고른 요리의 총명성을 최대로 하라.
규칙
제한
두 줄에 정수를 하나씩 출력한다. 첫째 줄에는 예산 안에서 얻을 수 있는 최대 총명성을 출력한다. 둘째 줄에는 그 최대 총명성을 내는 총비용 가운데 가장 작은 값을 출력한다. 이 값은 B 이하다.