묵직한 동전 문제
시간 제한1초메모리 제한128 MB
구매 대금으로 낼 동전을 골라, 남은 동전과 거스름돈의 무게 합이 최소가 되도록 하는 문제입니다.
문제
당신은 동전으로 물건값을 치르기를 좋아하지만 문제가 하나 있습니다. 잔돈이 너무 많아 주머니가 무거워졌습니다. 이 무게를 줄일 계획을 세웠고, 그 계획을 실행할 프로그램이 필요합니다.
다음에 살 물건의 값은 센트입니다. 가진 동전 중 일부를 골라 총액이 이상이 되도록 지불하며, 더 많이 내면 가게가 거스름돈을 돌려줍니다. 지불이 끝난 뒤 주머니에 남는 동전들 — 즉 지불하지 않은 동전과 가게가 거슬러 준 동전 — 의 총 무게가 가장 작아지도록 어떤 동전을 낼지 고르세요.
가게가 당신에게 센트를 거슬러 줘야 할 때는 탐욕적으로 거스름돈을 만듭니다. 값이 이하인 액면 중 가장 큰 동전 하나를 주고 그 값만큼 에서 빼며, 가 이 될 때까지 이를 반복합니다. 가게는 모든 액면의 동전을 무제한으로 가지고 있습니다.
액면은 가지입니다. 번째 액면은 정수 값 (센트)와 무게 (그램)를 가집니다. 정확히 한 액면의 값이 이며, 값이 같은 액면은 없습니다.
당신은 개의 동전을 가지고 있고, 번째 동전의 액면은 입니다.
제약: , , , , (소수 둘째 자리까지 주어짐), .
입력
첫 줄에 정수 세 개 , , 가 주어집니다. 각각 물건값(센트), 동전 액면의 수, 당신이 가진 동전의 수입니다.
다음 개의 줄에는 정수 와 (정확히 소수 둘째 자리까지 주어지는) 실수 가 주어집니다. 각각 번째 액면의 값(센트)과 무게(그램)입니다.
다음 개의 줄에는 정수 가 하나씩 주어집니다. 번째 동전의 액면 번호(1부터 시작)입니다.
출력
물건을 살 수 있다면 달성 가능한 최소 총 무게를 그램 단위로 소수 둘째 자리까지 반올림하여 출력합니다(답은 항상 의 정확한 배수입니다). 살 수 없다면 too poor를 출력합니다.
힌트
5센트 동전 일곱 개를 가지고 3센트짜리 물건을 산다고 합시다. 액면은 1, 5, 10, 20센트이며 무게는 각각 1, 2, 1, 9그램입니다.
한 가지 최적해는 5센트 동전 세 개를 내는 것입니다. 그러면 가게가 12센트를 거슬러 주며 10센트 하나와 1센트 둘을 돌려줍니다. 다른 최적해는 5센트 동전 네 개를 내는 것으로, 가게가 17센트를 거슬러 주며 10센트 하나, 5센트 하나, 1센트 둘을 돌려줍니다. 두 경우 모두 주머니에 그램이 남습니다.