구간 요금 책정
면접 대비시간 제한1초메모리 제한128 MB
각 승차 정류장의 요금을 뒤로 갈수록 낮아지지 않게 정하고, 예산이 요금 이상인 승객만 타도록 할 때 총수입을 최대화한다.
문제
지하철 노선을 운영하면서, 누가 탑승할지와 각 승객의 예산을 정확히 안다고 가정할 때 수익을 최대화하는 요금을 정하려고 합니다.
노선에는 정류장이 개 있으므로 인접한 정류장 사이의 구간은 개입니다. 문제를 단순화하기 위해 모든 승객은 마지막 정류장 까지 가지만, 서로 다른 정류장에서 탑승합니다. 각 출발 정류장 ()마다 요금을 하나씩 정해야 합니다.
공정성을 위해, 목적지에서 더 먼 정류장의 요금이 더 가까운 정류장보다 쌀 수는 없습니다. 즉 정류장 의 요금은 정류장 의 요금 이상이어야 하며, 이는 더 긴 거리를 이동하기 때문입니다.
각 정류장마다 그곳에서 타려는 모든 승객의 예산이 정확히 주어집니다. 승객은 자신의 예산이 해당 정류장의 요금 이상일 때에만 탑승하고, 그렇지 않으면 걸어가며 요금을 내지 않습니다. 어떤 요금도 $5.00(즉 센트)를 넘을 수 없으며, 모든 요금은 센트 이상 센트 이하입니다. 지하철에는 항상 모두가 앉을 자리가 충분합니다.
한 정류장에서 얻는 수익은 그 요금에 그곳에서 탑승하는 승객 수를 곱한 값이며, 전체 수익의 합을 최대화하세요.
입력
첫 번째 줄에는 데이터 집합의 수 가 주어집니다. 각 데이터 집합은 다음과 같은 형식입니다.
- 첫 번째 줄에는 정류장의 수를 나타내는 정수 ()이 주어집니다.
- 이어지는 개의 줄은 탑승 승객을 나타내며, 번째 줄은 정류장 에서 타는 승객들(모두 정류장 에서 내림)을 설명합니다. 이 줄에는 개의 정수 (), 즉 해당 승객들의 예산 (센트 단위)가 비내림차순으로 주어집니다. 빈 줄은 그 정류장에서 타는 승객이 없음을 뜻합니다.
예산은 을 넘을 수 있으며, 그런 승객도 센트 상한 이하의 어떤 요금에도 탑승합니다.
출력
각 데이터 집합에 대해 한 줄에 Data Set x:를 출력합니다. 여기서 는 데이터 집합의 번호(부터 시작)입니다. 다음 줄에는 최대 수익(센트 단위)을 출력합니다. 연속된 데이터 집합 사이는 빈 줄 하나로 구분합니다.