장보기
면접 대비시간 제한1초메모리 제한128 MB
장바구니 항목마다 대소문자를 무시한 이름으로 상점 항목을 찾아 실제 구매 수량에 대한 클럽 카드 할인액을 더한다.
문제
빈트 서프(Vint Cerf)와 밥 칸(Bob Kahn)은 자신들의 네트워크 사용자들이 궁금한 나머지, 그들 모두를 바비큐 파티에 초대하기로 했습니다. 네트워크의 트래픽 양으로 미루어 볼 때 아주 많은 음식이 필요할 것 같습니다.
식료품점의 재고 목록과 두 사람의 장보기 목록이 주어집니다. 이 식료품점의 회원 카드(club card)를 쓰면 일부 품목을 더 싸게 살 수 있는데, 회원 카드를 사용하여 절약할 수 있는 총 금액을 구하세요.
장보기 목록의 각 품목에 대해, 그 품목을 매장에서 취급한다면 실제로 구매하는 수량 한 개당 (정상가 − 회원가)만큼 절약합니다. 실제 구매 수량은 원하는 수량 와 매장 재고 중 더 작은 값입니다. 즉, 이 품목에서 절약하는 금액은 입니다. 장보기 목록에 있지만 매장에서 취급하지 않는 품목은 살 수 없으므로 절약액에 포함되지 않습니다. 전체 절약액은 모든 품목에서 절약한 금액의 합입니다.
입력
첫 번째 줄에 입력 데이터 집합의 개수 가 주어집니다. 이어서 개의 데이터 집합이 아래 형식으로 주어집니다.
각 데이터 집합의 첫 번째 줄에는 두 정수 과 이 주어집니다 (). 은 식료품점에 있는 서로 다른 품목의 수이고, 은 장보기 목록에 있는 서로 다른 품목의 수입니다.
다음 개의 줄에는 각각 식료품점의 품목이 하나씩 주어집니다. 각 줄에는 현재 재고 수량을 나타내는 정수 , 정상가 , 회원가 , 그리고 공백 하나에 이어 품목 이름 가 이 순서대로 주어집니다. 가격은 $0.00 이상 $99.99 이하이며 항상 소수점 둘째 자리까지 표기됩니다 (예: $3.00). 이름은 대소문자 영문자와 공백을 포함할 수 있습니다.
다음 개의 줄에는 각각 장보기 목록의 품목이 하나씩 주어집니다. 각 줄에는 원하는 수량을 나타내는 정수 , 그리고 공백 하나에 이어 품목 이름 가 주어집니다.
장보기 목록의 품목은 이름이 대소문자를 무시하고 같으면 식료품점의 품목과 같은 것으로 봅니다. 입력에 주어지는 이름에는 앞뒤에 불필요한 공백이 없습니다.
출력
각 데이터 집합에 대해, 먼저 그 집합의 번호 를 사용하여 Data Set x:를 한 줄에 출력합니다. 다음 줄에는 회원 카드를 사용하여 절약한 정확한 금액을 앞에 $ 기호를 붙이고 소수점 둘째 자리까지 출력합니다 (쉼표는 넣지 않습니다). 연속한 데이터 집합은 빈 줄 하나로 구분합니다.