7. Клубы
Ограничения: время – 2s/4s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
В академии супер-магов (Academy of Cool Magicians) существует правило, чтобы каждый ученик посещал ровно один спортивный клуб. В начале учебного года учащиеся пишут свои предпочтения, и их распределяют по клубам таким образом, чтобы разница в количестве членов в самом большом и в самом маленьком из клубов была как можно меньше. Считается, что в клубе, который никто не посещает, 0 членов.
Напишите программу, которая выполняет это распределение.
В первой строке входного файла содержатся два целых числа, разделенных пробелом – количество учащихся `N` (`1\ ≤\ N\ ≤\ 50`) и количество клубов `K` (`1\ ≤\ K\ ≤\ 50`). Далее следует `N` строк, в `(i+1)`-ой строке файла указаны предпочтения `i`-го ученика: сначала указано количество клубов `m_i` (`1\ ≤\ m_i\ ≤\ K`), которые он хотел бы посещать, затем через пробел – их номера в диапазоне от 1 до `K`.
В выходной файл вывести в первой строке минимум разницы между числом членов самого большого и самого маленького клубов, а во второй строке – `N` чисел в диапазоне от 1 до `K` через пробел, `i`-ое число в строке означает номер клуба, выбранный для `i`-го ученика. Можно вывести любое из распределений, минимизирующих разницу.
Пример ввода
4 3
3 1 2 3
1 2
2 1 3
2 1 2
Вывод для примера
1
1 2 3 1