현금 인출기
면접 대비시간 제한1초메모리 제한128 MB
목표 금액과 각 지폐 종류의 제한된 개수가 주어질 때, 목표를 넘지 않는 최대 지급 가능 금액을 구하는 문제입니다.
문제
어느 은행이 현금 인출기를 설치하려고 합니다. 요청된 금액에 대해 이 기계는 보유한 지폐로 금액을 지급합니다. 기계는 서로 다른 가지 액면 을 사용하며, 각 액면 에 대해 장의 지폐를 보유합니다.
예를 들어 이고 , , 이면, 기계는 액면 100인 지폐 10장, 액면 50인 지폐 4장, 액면 10인 지폐 5장을 보유하고 있다는 뜻입니다.
요청 금액을 라 할 때, 보유한 지폐로 지급할 수 있는, 를 넘지 않는 최대 금액을 계산하는 프로그램을 작성하세요.
입력
입력은 여러 개의 데이터 집합으로 이루어지며, 파일의 끝(EOF)까지 읽습니다. 각 데이터 집합은 하나의 거래를 다음 형식으로 나타냅니다.
cash N n1 D1 n2 D2 ... nN DN
여기서 은 요청 금액, 은 액면의 개수, 은 액면 의 보유 지폐 수이며, 에 대해 입니다. 숫자 사이에는 공백이 자유롭게 들어갈 수 있습니다. 입력은 항상 올바른 형식입니다.
출력
각 데이터 집합에 대해, 요청 금액을 넘지 않으면서 기계가 지급할 수 있는 최대 금액을 한 줄에 하나씩 출력하세요.
참고
요청한 금액을 정확히 만들 수 없으면, 그 금액을 넘지 않는 범위에서 지급 가능한 최대 금액을 지급합니다. 기계에 지급할 지폐가 없거나(예: ) 요청 금액이 이면 지급 금액은 입니다. 같은 지급 금액을 만드는 지폐 조합은 여러 가지일 수 있습니다.