균형 있는 작업 배정
시간 제한4초메모리 제한256 MB
할당 가능한 모든 작업을 자격이 있는 작업자 한 명에게 배정하고, 작업자별 작업 수가 M/N에 최대한 가깝도록 나눕니다.
문제
명의 작업자와 개의 서로 다른 작업이 있다. 행렬 가 주어지며, 작업자 가 작업 를 수행할 자격이 있으면 , 없으면 이다. 작업자는 자격이 있는 작업에만 배정할 수 있다.
작업자별로 수행하는 작업 수의 분포가 유클리드 거리 기준으로 균등 분포에 최대한 가깝도록 배정한다. 즉, 번째 원소가 작업자 가 수행한 작업 수인 차원 벡터가, 모든 원소가 실수 인 차원 벡터에 최대한 가까워야 한다.
추가 조건으로, 한 명 이상의 작업자가 수행할 수 있는 작업은 모두 정확히 한 명의 작업자에게 배정되어야 한다.
입력
첫째 줄에 정수 과 이 주어진다 (). 이어서 개의 줄에 각각 개의 문자가 주어진다. 각 문자는 '0' 또는 '1'이며, 이 줄들이 행렬 를 나타낸다.
출력
개의 줄을 출력한다. 번째 줄에는 먼저 작업자 에게 배정된 작업 수 를 출력하고, 이어서 그 작업들의 번호를 출력한다. 최적의 분포를 얻는 배정이 여러 가지라면 그중 아무거나 출력해도 된다.
힌트
두 벡터 과 사이의 유클리드 거리는 이다.