장보기

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

빈트 서프(Vint Cerf)와 밥 칸(Bob Kahn)은 자신들의 네트워크 사용자들이 궁금한 나머지, 그들 모두를 바비큐 파티에 초대하기로 했습니다. 네트워크의 트래픽 양으로 미루어 볼 때 아주 많은 음식이 필요할 것 같습니다.

식료품점의 재고 목록과 두 사람의 장보기 목록이 주어집니다. 이 식료품점의 회원 카드(club card)를 쓰면 일부 품목을 더 싸게 살 수 있는데, 회원 카드를 사용하여 절약할 수 있는 총 금액을 구하세요.

장보기 목록의 각 품목에 대해, 그 품목을 매장에서 취급한다면 실제로 구매하는 수량 한 개당 (정상가 − 회원가)만큼 절약합니다. 실제 구매 수량은 원하는 수량 $m_j$와 매장 재고 $n_i$ 중 더 작은 값입니다. 즉, 이 품목에서 절약하는 금액은 $\min(m_j, n_i) \times (p_i - c_i)$입니다. 장보기 목록에 있지만 매장에서 취급하지 않는 품목은 살 수 없으므로 절약액에 포함되지 않습니다. 전체 절약액은 모든 품목에서 절약한 금액의 합입니다.

입력

첫 번째 줄에 입력 데이터 집합의 개수 $K$가 주어집니다. 이어서 $K$개의 데이터 집합이 아래 형식으로 주어집니다.

각 데이터 집합의 첫 번째 줄에는 두 정수 $N$과 $M$이 주어집니다 ($1 \le N, M \le 100$). $N$은 식료품점에 있는 서로 다른 품목의 수이고, $M$은 장보기 목록에 있는 서로 다른 품목의 수입니다.

다음 $N$개의 줄에는 각각 식료품점의 품목이 하나씩 주어집니다. 각 줄에는 현재 재고 수량을 나타내는 정수 $n_i$, 정상가 $p_i$, 회원가 $c_i$, 그리고 공백 하나에 이어 품목 이름 $s_i$가 이 순서대로 주어집니다. 가격은 $0.00 이상 $99.99 이하이며 항상 소수점 둘째 자리까지 표기됩니다 (예: $3.00). 이름은 대소문자 영문자와 공백을 포함할 수 있습니다.

다음 $M$개의 줄에는 각각 장보기 목록의 품목이 하나씩 주어집니다. 각 줄에는 원하는 수량을 나타내는 정수 $m_j$, 그리고 공백 하나에 이어 품목 이름 $s_j$가 주어집니다.

장보기 목록의 품목은 이름이 대소문자를 무시하고 같으면 식료품점의 품목과 같은 것으로 봅니다. 입력에 주어지는 이름에는 앞뒤에 불필요한 공백이 없습니다.

출력

각 데이터 집합에 대해, 먼저 그 집합의 번호 $x$를 사용하여 Data Set x:를 한 줄에 출력합니다. 다음 줄에는 회원 카드를 사용하여 절약한 정확한 금액을 앞에 $ 기호를 붙이고 소수점 둘째 자리까지 출력합니다 (쉼표는 넣지 않습니다). 연속한 데이터 집합은 빈 줄 하나로 구분합니다.