 FISHES | Описание Последовательность клеток занумерована числами от 1 до N. В каждой клетке стоит либо черная, либо белая фишка. Группой назовем набор подряд стоящих фишек одного цвета, ограниченный с обеих сторон фишками другого цвета или концами последовательности. Следует переместить фишки так, чтобы они образовали не более двух групп. Перемещение фишек описывается с помощью плана обмена, в котором используются понятия операция обмена и шаг. Операция обмена меняет местами две соседние группы фишек. Шаг состоит не более чем из K одновременно выполняемых обменов. Обмены можно совершать одновременно только тогда, когда в них участвуют разные группы. После каждого шага группы одного цвета, оказавшиеся рядом, объединяются. План обменов содержит описания шагов, выполняемых последовательно.  Задача Напишите программу, определяющую план обменов, с помощью которого за наименьшее число шагов получается последовательность, состоящая не более чем из двух групп. Технические характеристики: Имя входного файла: FISHES.IN Имя выходного файла: FISHES.OUT Ограничение по времени: 2 секунды Ограничение по памяти: 32 мегабайта Формат входных данных В первой строке входного файла записаны числа N и K (1<=N<=100000 и 1<=K<=10000). Исходная расстановка фишек задается в последующих строках, содержащих N чисел (0 или 1), разделенных пробелами или переводами строк. При этом 0 соответствует черной фишке, 1 - белой. Формат выходных данных Выходной файл должен содержать описание шагов плана, по одному шагу на строке. Описание шага начинается с числа L - количества обменов на этом шаге. Затем для каждого обмена указывается минимальный номер клетки, в которой стоит фишка, участвующая в этом обмене. Последняя строка плана должна содержать одно число 0. Примеры: | FISHES.IN | | FISHES.OUT | 9 3 1 0 0 1 1 0 1 1 0 | | 2 1 6 1 1 0 | | FISHES.IN | | FISHES.OUT | 3 1 1 1 0 | | 0 | Примечание Требуется найти план, содержащий наименьшее число шагов, при этом общее число обменов может быть не минимальным |
|---|