누가 쿠키를 가져올까?

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

요약
각 스터디 그룹마다 쿠키를 가져올 소를 한 마리씩 정하되, 소마다 역수의 합을 올림한 한도 안에서 배정하고 사전순으로 가장 작은 배정을 구한다.
난이도

어려움10점 중 8점

유형
수학, 그리디, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

농부 John의 소 NN마리가 11번부터 NN번까지 번호를 달고 MM개의 스터디 그룹을 만들었습니다. 스터디 그룹 ii에는 소 SiS_i마리가 속해 있습니다(한 소가 여러 스터디 그룹에 동시에 속할 수 있습니다).

각 스터디 그룹에서는 모임에 쿠키를 가져올 소 한 마리를 그 그룹의 구성원 중에서 반드시 정해야 합니다. 쿠키는 비싸고 준비하는 데 품이 들기 때문에, 소들은 이 부담을 최대한 공평하게 나누고 싶어 합니다.

어떤 소가 속한 스터디 그룹들의 크기가 각각 c1,c2,…,cKc_1, c_2, \dots, c_K라고 합시다(즉 그 소는 KK개의 그룹에 속해 있고, 그중 jj번째 그룹의 구성원 수가 cjc_j명입니다). 이때 그 소가 쿠키를 가져올 의향이 있는 모임 수는 최대

⌈1c1+1c2+⋯+1cK⌉\left\lceil \frac{1}{c_1} + \frac{1}{c_2} + \cdots + \frac{1}{c_K} \right\rceil

회입니다.

각 스터디 그룹마다 쿠키를 가져올 소 한 마리를 배정하되, 어떤 소도 자신이 원하는 횟수보다 더 많은 모임에 배정되지 않도록 하세요.

제약: 1≤N≤10001 \le N \le 1000, 1≤M≤1001 \le M \le 100, 1≤Si≤191 \le S_i \le 19.

입력

  • 첫째 줄: 공백으로 구분된 두 정수 NN과 MM.
  • 둘째 줄부터 M+1M+1째 줄까지: i+1i+1째 줄은 스터디 그룹 ii를 나타내며, SiS_i에 이어 그 그룹의 구성원 소 번호 Gi,1,Gi,2,…,Gi,SiG_{i,1}, G_{i,2}, \dots, G_{i,S_i}가 모두 공백으로 구분되어 주어집니다.

출력

MM개의 줄을 출력합니다. ii째 줄에는 스터디 그룹 ii에 쿠키를 가져오는 소의 번호 aia_i를 출력합니다.

유효한 배정이 여러 개일 수 있으므로 사전순으로 가장 작은 배정을 출력하세요. 즉 a1a_1을 가능한 한 작게, 그런 배정들 중에서 a2a_2를 가능한 한 작게, 이런 식으로 정합니다.

유효한 배정이 존재하지 않으면 대신 −1-1 하나만 한 줄에 출력합니다.

힌트

이 한도는 소가 맡은 모임이 얼마나 부담스러운지를 반영합니다. 큰 그룹의 구성원은 기여도 1/c1/c가 작으므로 더 많은 모임을 감당할 수 있습니다.

예를 들어 크기가 각각 22, 33, 11인 그룹에 속한 소의 한도는 ⌈12+13+11⌉=⌈1.833…⌉=2\left\lceil \tfrac{1}{2} + \tfrac{1}{3} + \tfrac{1}{1} \right\rceil = \lceil 1.833\ldots \rceil = 2이므로, 그 소는 최대 22번의 모임에 쿠키를 가져올 의향이 있습니다. 크기가 33인 그룹 두 곳에 속한 소의 한도는 ⌈13+13⌉=1\left\lceil \tfrac{1}{3} + \tfrac{1}{3} \right\rceil = 1입니다.

예제3

  1. 예제 1

    입력
    5 6
    3 2 4 5
    2 1 3
    3 1 2 3
    1 1
    2 2 5
    3 2 3 4
    
    예상 출력
    2
    1
    2
    1
    5
    3
    
  2. 예제 2

    입력
    1 1
    1 1
    
    예상 출력
    1
    
  3. 예제 3

    입력
    3 1
    3 1 2 3
    
    예상 출력
    1