아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

버스

시간 제한2초메모리 제한256 MB

요약
매일 탑승자 중 한 명이 하루 대여료 전액을 내도록 정해 모든 직원의 공정 분담액 초과분 중 가장 큰 값을 최소화합니다.
난이도

보통10점 중 7점

유형
그래프, 이분 탐색
정답자
아직 제출이 없습니다

문제

어떤 회사는 매일 퇴근하는 직원을 집까지 태워 주는 셔틀버스를 한 대 운행한다. 버스를 타려면 미리 온라인으로 신청해야 하고, 매일 아침 그날 버스를 타는 사람의 명단을 정원을 넘지 않는지 확인한 뒤 공개한다.

버스 대여료는 하루에 pp원이고, 몇 명이 타는지와 관계없이 같다. 모두가 받아들인 규칙에 따라 그날 버스를 탄 사람 중 정확히 한 명이 대여료 전액을 기사에게 낸다. 누가 낼지도 매일 같이 공지한다.

날마다 대여료를 낼 사람을 아래에서 정의하는 뜻으로 공정하게 고르는 프로그램을 작성한다.

L1,L2,…,LdL_1, L_2, \dots, L_d가 1일째부터 dd일째까지 버스를 탄 직원 명단이고, nin_i가 LiL_i의 크기다. 직원 AA가 t1,t2,…,tkt_1, t_2, \dots, t_k일째에 버스를 탔다면 AA가 부담해야 할 정당한 몫은

PA=p(1nt1+1nt2+⋯+1ntk)P_A = p \left( \frac{1}{n_{t_1}} + \frac{1}{n_{t_2}} + \cdots + \frac{1}{n_{t_k}} \right)

원이다. AA가 대여료를 낼 사람으로 rr번 뽑히면 실제로 내는 돈은 QA=r×pQ_A = r \times p원이고, 정당한 몫보다 EA=QA−PAE_A = Q_A - P_A원 더 낸 셈이 된다. 한 배정의 불공정도는 모든 직원 AA의 EAE_A 중 최댓값이다. 불공정도가 가장 작은 배정을 공정한 배정이라고 한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에 양의 정수 nn, dd, pp가 주어진다. nn은 직원 수, dd는 날의 수, pp는 하루 버스 대여료다 (n,d≤500n, d \le 500, p≤109p \le 10^9).

이어지는 dd개의 줄에 하루치 정보가 한 줄씩 온다. 각 줄은 그날 버스를 탄 직원 수로 시작하고, 그 뒤에 11 이상 nn 이하의 직원 번호가 그 개수만큼 이어진다. 한 줄에 같은 번호가 두 번 나오지는 않으며, 어느 날이든 적어도 한 명은 버스를 탄다. 계산을 쉽게 하도록 pp는 어느 날에도 한 사람 몫이 정수가 되게 정해져 있다.

입력의 마지막 줄은 0 0 0이고, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 공정한 배정의 불공정도를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    3 2 1000
    2 1 2
    2 1 3
    4 4 3000
    2 1 2
    2 1 3
    2 2 3
    3 2 3 4
    0 0 0
    
    예상 출력
    500
    2000
    
  2. 예제 2

    입력
    4 1 12
    4 1 2 3 4
    0 0 0
    
    예상 출력
    9