장비 구매

면접 대비

시간 제한1초메모리 제한128 MB

요약
각 기계를 요구하는 방문 수를 세고 사용 한도로 잘라낸 뒤, 수익이 구매비와 사용비를 넘는 기계를 오름차순으로 출력한다.
난이도

쉬움10점 중 3점

유형
배열, 구현, 수학, 정렬
정답자
아직 제출이 없습니다

문제

의료비가 비싼 이유 중 하나는 많은 병원이 매우 첨단이면서 값비싼 장비를 갖추고 있기 때문이다. 이러한 장비의 구매 비용은 어떻게든 회수해야 하며, 보통 많은 환자에게 장비를 사용하고 그 사용료를 환자(또는 보험사)에게 청구하는 방식으로 회수한다. 값비싼 장비를 구매하는 데에는 여러 정당한 이유가 있지만, 여기서는 구매를 순전히 경제적인 관점에서만 판단한다. 즉, 어떤 장비가 그 비용보다 더 많은 돈을 벌어들이는지를 알아낸다.

장비 목록이 주어진다. 장비 ii는 구매 비용 pip_i, 사용 비용 cic_i, 최대 사용 횟수 uiu_i, 그리고 환자(또는 보험사)가 한 번 사용할 때마다 지불하는 청구 금액 rir_i를 가진다. 장비를 사려면 pip_i를 한 번 지불하고, 사용할 때마다 cic_i를 지불하며, 환자는 사용할 때마다 당신에게 rir_i를 지불한다. 한 장비는 최대 uiu_i번까지만 사용할 수 있다. 수요가 uiu_i보다 크면 처음 uiu_i명의 환자만 진료할 수 있다.

또한 환자 방문 목록이 주어지며, 각 방문은 필요한 장비 하나를 지정한다. 장비 ii를 필요로 하는 방문의 수를 did_i라고 하면, 장비 ii는 실제로 si=min⁡(di,ui)s_i = \min(d_i, u_i)번 사용되어 si⋅ris_i \cdot r_i의 수입을 얻고, 총 지출은 pi+si⋅cip_i + s_i \cdot c_i가 된다. 수입이 지출보다 엄격히 클 때 그 장비는 이득이 된다. 이득이 되는 장비가 무엇인지 구하라.

입력

첫째 줄에 데이터 집합의 개수 KK가 주어진다. 이어서 KK개의 데이터 집합이 다음 형식으로 주어진다.

각 데이터 집합의 첫째 줄에는 두 정수 nn과 mm이 주어진다. n≤10000n \le 10000은 환자 방문의 수이고, m≤1000m \le 1000은 검토 중인 장비의 수이다.

다음 mm개의 줄에는 각각 한 장비를 설명하는 네 정수 pip_i, cic_i, uiu_i, rir_i가 주어진다.

그 다음 nn개의 줄에는 각각 하나의 정수 mjm_j (1≤mj≤m1 \le m_j \le m)가 주어지며, 이는 jj번째 방문이 필요로 하는 장비의 번호이다.

출력

각 데이터 집합에 대해 먼저 Data Set x: 형식의 줄을 출력한다. 여기서 xx는 데이터 집합의 번호이며 1부터 시작한다. 그다음 이득이 되는 모든 장비의 번호를 오름차순으로 한 줄에 하나씩 출력한다. 연속한 데이터 집합 사이는 빈 줄로 구분한다.

예제1

  1. 예제 1

    입력
    1
    8 4
    100 0 1 150
    10000 500 1000000 5600
    500 100 2 300
    500 100 3 300
    4
    2
    3
    2
    3
    4
    3
    4
    
    예상 출력
    Data Set 1:
    2
    4