Ограничения: время – 2s/4s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
На международной космической станции много центрифуг в каждой
лаборатории. Каждая центрифуга имеет несколько (`N`) отделений, в
каждое из которых можно поместить 0, 1 или 2 образца. Вы должны
написать программу, которая позволит разместить `M` образцов по
отделениям центрифуги, таким образом, чтобы число образцов в
отделении не превышало 2 и следующее выражение для IMBALANCE было
минимальным:
`N`
IMBALANCE = `∑` `|\ "МО"_i\ -\ "СМ"\ |`
`i=1`
где `MО_i` – это масса `i`-го отделения, равная сумме масс образцов в
`i`-ом отделении
`СM` – это средняя масса отделения и равна сумме масс всех
образцов, деленной на число отделений (`N`).
Входной файл содержит несколько наборов данных. Первая строка
каждого набора содержит два числа, разделенных пробелом. Первое
число `N` (`1\ ≤\ N\ ≤\ 5`) определяет число отделений в центрифуге, а второе
число `M` (`1\ ≤\ M\ ≤\ 2*N`) определяет число образцов. Вторая строка
содержит `M` чисел (от 1 до 1000), разделенных пробелом,
представляющие массы образцов. Ввод завершается строкой с двумя
нулями.
В выходной файл для каждого набора вы должны напечатать строку
с номером набора в формате "Set #`X`" где `X` – номер набора, нумерация
начинается с 1. Следующие `N` строк содержат номер отделения в первой
колонке, двоеточие во второй колонке и массы образцов, начиная с
четвертой колонки, разделенных одним пробелом. Далее ваша программа
должна напечатать значение IMBALANCE с точностью 5 знаков после
запятой (т.е. десятичной точки). После результатов для каждого
набора (в т.ч. и самого последнего) вывести пустую строку.
Пример ввода
2 3
6 3 8
3 5
51 19 27 14 33
5 9
1 2 3 5 7 11 13 17 19
0 0
Вывод для примера
Set #1
1: 3 6
2: 8
IMBALANCE 1.00000
Set #2
1: 14 33
2: 19 27
3: 51
IMBALANCE 6.00000
Set #3
1: 1 17
2: 2 13
3: 3 11
4: 5 7
5: 19
IMBALANCE 11.60000