Страница: 1 [Всего задач: 1]
Задан круг, разделенный на N секторов, и два целых числа M и K. В каждый из
секторов круга помещается одно целое число, не меньшее K. Когда секторы
заполнены числами, из них можно получать новые числа по следующим
правилам:
взять число из одного сектора;
взять число, равное сумме двух или более чисел в смежных секторах.
Из новых чисел составляется наибольшая последовательность подряд идущих
чисел, начинающаяся с числа M: (M, M+1, M+2, ..., I).
Пример на рисунке показывает, как получить все новые числа от 2 до 21 для
приведенных на нем чисел в секторах. Серым цветом выделены суммируемые
числа.
Напишите программу, которая определяет способ расстановки чисел в
секторах, максимизирующий длину указанной последовательности.
Входные данные
Входной файл содержит три целых числа N, M и K
(N ≤ 6, M ≤ 20, 0 ≤ K ≤ 20).
Выходные данные
Выведите в первую строку выходного файла наибольшее число I для
неразрывной последовательности новых чисел от M до I, которая может быть
получена из чисел в секторах. Далее выведите все наборы чисел в секторах, из
которых можно получить такую последовательность. Каждый набор
записывается в отдельную строку выходного файла в виде списка чисел,
начинающегося с наименьшего из них (оно может быть не единственным).
Числа в списке должны идти в том же порядке, в котором они записаны в
секторах круга. Если наименьшее число встречается несколько раз, следует
вывести все возможные комбинации. Например, (1 1 2 3), (1 2 3 1), (1 3 2 1) и (1
1 3 2).
Пример входного файла
5
2
1
Пример выходного файла
21
1 3 10 2 5
1 5 2 10 3
2 4 9 3 5
2 5 3 9 4
Страница: 1 [Всего задач: 1]