만드는 중입니다

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

균형 있는 작업 배정

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

요약
할당 가능한 모든 작업을 자격이 있는 작업자 한 명에게 배정하고, 작업자별 작업 수가 M/N에 최대한 가깝도록 나눕니다.
난이도

보통10점 중 7점

유형
그래프, 최단 경로
정답자
아직 제출이 없습니다

문제

NN명의 작업자와 MM개의 서로 다른 작업이 있다. 행렬 AA가 주어지며, 작업자 ii가 작업 jj를 수행할 자격이 있으면 Ai,j=1A_{i,j}=1, 없으면 Ai,j=0A_{i,j}=0이다. 작업자는 자격이 있는 작업에만 배정할 수 있다.

작업자별로 수행하는 작업 수의 분포가 유클리드 거리 기준으로 균등 분포에 최대한 가깝도록 배정한다. 즉, ii번째 원소가 작업자 ii가 수행한 작업 수인 NN차원 벡터가, 모든 원소가 실수 M/NM / N인 NN차원 벡터에 최대한 가까워야 한다.

추가 조건으로, 한 명 이상의 작업자가 수행할 수 있는 작업은 모두 정확히 한 명의 작업자에게 배정되어야 한다.

입력

첫째 줄에 정수 NN과 MM이 주어진다 (1≤N,M≤3001 \le N, M \le 300). 이어서 NN개의 줄에 각각 MM개의 문자가 주어진다. 각 문자는 '0' 또는 '1'이며, 이 줄들이 행렬 AA를 나타낸다.

출력

NN개의 줄을 출력한다. ii번째 줄에는 먼저 작업자 ii에게 배정된 작업 수 kik_i를 출력하고, 이어서 그 작업들의 번호를 출력한다. 최적의 분포를 얻는 배정이 여러 가지라면 그중 아무거나 출력해도 된다.

힌트

두 벡터 (u1,u2,…,uN)(u_1, u_2, \ldots, u_N)과 (v1,v2,…,vN)(v_1, v_2, \ldots, v_N) 사이의 유클리드 거리는 (v1−u1)2+(v2−u2)2+…+(vN−uN)2\sqrt{(v_1 - u_1)^2 + (v_2 - u_2)^2 + \ldots + (v_N - u_N)^2} 이다.

예제2

  1. 예제 1

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

    입력
    2 4
    0100
    1100
    
    예상 출력
    1 2
    1 1