만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

비트 파티

면접 대비

시간 제한15초메모리 제한1024 MB

요약
로봇과 계산대마다 처리 한도, 스캔 시간, 고정 시간이 주어질 때 비트를 나눠 모든 로봇이 끝나는 가장 이른 시각을 구합니다.
난이도

보통10점 중 5점

유형
이분 탐색, 정렬, 그리디
정답자
아직 제출이 없습니다

문제

요즘 로봇은 자동차를 운전할 수 있지만, 좋은 파티를 열 수 있을까요? 이 주제에 대한 Code Jam 팀의 연구는 아직 초기 단계입니다. 우리는 RR대의 로봇 쇼핑객을 지역 슈퍼마켓에 보내 토론토에서 열리는 World Finals 파티 용품을 사 오게 했습니다. 그런데 로봇들이 그린 캐나다 파티의 1차 모델은 아주 단순했습니다. 지역에서 파는 작은 도넛 모양 간식인 "비트"를 BB개만 샀습니다. AI는 나중에 개선할 예정이지만, 지금은 로봇들이 그 비트를 모두 가능한 한 빨리 사도록 돕고자 합니다.

슈퍼마켓에는 고객의 상품을 스캔하는 계산원이 CC명 있습니다. ii번째 계산원은 다음과 같이 동작합니다.

  • 고객 한 명당 최대 MiM_i개의 상품을 받습니다.
  • 상품 하나를 스캔하는 데 SiS_i초가 걸립니다.
  • 결제와 포장에 추가로 PiP_i초가 걸립니다.

즉, NN개의 비트를 가져온 고객은 (NN은 MiM_i 이하여야 합니다) ii번째 계산원과 총 Si×N+PiS_i \times N + P_i초 동안 응대를 받습니다.

로봇이 계산원을 이용하기 전에, 비트를 로봇들에게 원하는 대로 나누어 줄 수 있습니다. 비트는 온전해야 하므로 조각으로 쪼갤 수 없습니다. 비트를 하나도 받지 못한 로봇은 계산원을 이용하지 못하고 실망한 채 돌아갑니다.

그다음, 비트를 하나 이상 받은 각 로봇에게 서로 다른 계산원을 한 명씩 고르게 합니다. 두 로봇이 같은 계산원을 쓸 수 없고, 로봇 한 대가 계산원을 둘 이상 쓸 수도 없습니다. 모든 로봇은 시간 0에 계산원과의 응대를 시작합니다. 로봇이 계산원과의 응대를 마치면 비트를 더 받을 수 없고, 다른 계산원과도 응대할 수 없습니다.

로봇들이 최적의 선택을 한다면, 모든 로봇이 계산원과의 응대를 끝낼 수 있는 가장 이른 시각은 언제입니까?

입력

첫 줄에는 테스트 케이스의 수 TT가 주어집니다. 이어서 TT개의 테스트 케이스가 주어집니다. 각 테스트 케이스는 로봇 쇼핑객 수 RR, 비트 수 BB, 계산원 수 CC를 나타내는 정수 세 개가 적힌 줄로 시작합니다. 그다음 CC개의 줄이 주어지며, ii번째 줄에는 ii번째 계산원의 최대 비트 수 MiM_i, 비트 하나당 스캔 시간 SiS_i(초), 결제와 포장 시간 PiP_i(초)가 정수 세 개로 적혀 있습니다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력합니다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 모든 로봇이 계산원과의 응대를 끝낼 수 있는 가장 이른 시각(초)입니다.

제한

  • 1≤T≤1001 \le T \le 100.
  • 모든 ii에 대해 1≤Mi≤1091 \le M_i \le 10^9.
  • 모든 ii에 대해 1≤Si≤1091 \le S_i \le 10^9.
  • 모든 ii에 대해 1≤Pi≤1091 \le P_i \le 10^9.
  • MiM_i 값 중 가장 큰 RR개의 합은 BB 이상입니다. (계산원 RR명으로 모든 비트를 처리할 수 있는 경우가 적어도 하나 있습니다.)

힌트

예제 1에서는 로봇이 2대, 비트가 2개, 계산원이 2명이며, 각 계산원은 상품을 한 개만 처리할 수 있습니다. 따라서 비트를 로봇마다 하나씩 줘야 합니다. 1번 계산원은 5초, 2번 계산원은 3초가 걸리므로 필요한 시간은 5초입니다.

예제 2는 앞의 경우와 비슷하지만, 이번에는 2번 계산원이 최대 2개까지 처리할 수 있습니다. 따라서 비트를 모두 한 로봇에게 주고, 그 로봇이 2번 계산원을 이용하게 하는 것이 가장 좋습니다. 상품 하나당 1초에 2초를 더해 4초가 걸립니다.

예제 3에서 최적의 전략은 비트 2개를 가진 로봇 한 대를 2번 계산원에게 보내고, 비트를 하나씩 가진 로봇 두 대를 나머지 계산원 중 아무 곳에나 보내는 것입니다.

예제1

  1. 예제 1

    입력
    3
    2 2 2
    1 2 3
    1 1 2
    2 2 2
    1 2 3
    2 1 2
    3 4 5
    2 3 3
    2 1 5
    2 4 2
    2 2 4
    2 5 1
    
    예상 출력
    Case #1: 5
    Case #2: 4
    Case #3: 7