Даны три строки, состоящие из строчных латинских букв. С этими строками можно производить следующие операции: либо заменить один символ строки на два таких же символа (например, заменить символ «a» на «aa»), либо, наоборот, заменить два подряд идущих одинаковых символа на один такой же символ.
Необходимо при помощи этих операций сделать все три строки равными какой-то другой общей строке S либо определить, что это сделать невозможно. При этом нужно минимизировать общее количество операций.
Программа получает на вход три строки, состоящие из строчных букв латинского алфавита. Длина каждой строки не превышает 100 символов.
Если при помощи указанных операций возможно сделать все три строки равными, выведите такую строку S , что суммарное число операций, необходимых для преобразования всех трёх данных строк к строке S , будет минимальным. Если этого сделать нельзя, программа должна вывести одно слово IMPOSSIBLE (заглавными буквами).
Решение, которое выводит правильный ответ только на тестах из условия и тех тестах, на которых ответом является слово IMPOSSIBLE, будет оцениваться в 0 баллов.
aaaza aazzaa azzza
aazza
xy xxyy yx
IMPOSSIBLE
Во владениях короля Флатландии находится прямая дорога длиной \(n\) километров, по одну сторону от которой расположен огромный лесной массив. Король Флатландии проникся идеями защиты природы и решил превратить свой лесной массив в заповедник. Но сыновья стали сопротивляться: ведь им хотелось получить эти земли в наследство.
У короля три сына: младший, средний и старший. Король решил, что в заповедник не войдут участки лесного массива, которые он оставит сыновьям в наследство. При составлении завещания король хочет, чтобы для участков выполнялись следующие условия:
Входной файл содержит одно целое число \(n\) (\(6 \le n \le 10^9\) ).
Выходной файл должен содержать три целых положительных числа, разделенных пробелами: \(a\), \(b\) и \(c\) – длины сторон участков, которые следует выделить младшему, среднему и старшему сыну, соответственно. Если оптимальных решений несколько, разрешается вывести любое.
В этой задаче четыре подзадачи. Баллы за подзадачу начисляются только в случае, если все тесты для данной подзадачи пройдены.
\(n \le 50\)
\(n \le 2000\)
\(n \le 40000\)
\(n \le 10^9\)
6
1 2 3
Два студента, Адам и Антон, отмечают двухлетний юбилей несдачи их экзамена по математической логике. После тщательного поиска в местном супермаркете они купили прямоугольный торт и две свечи. Позже в университетском городке Адам поставил свечи в различные целочисленные точки пирога и дал нож Антону, чтобы он разрезал торт. Срез должен начинаться и заканчиваться в целочисленных точках на краях пирога, и не должен касаться свеч. Кроме того, каждая часть должна содержать ровно одну свечу. Пожалуйста, помогите Антону найти начальную и конечную точки разреза.
7 3 2 2 3 2
2 0 3 3
Боб нашёл отличную задачу для детей из его старой книги по математике. В ней сказано: Есть 10 детей, стоящих в кругу, 5 из них стоят рядом с мальчиком, и 7 из них стоят рядом с девочкой. Как такое могло быть? Вот решение этой задачи. Если 4 мальчика и 6 девочек стоят следующим образом: BGBGBGBGGG, Здесь 5 детей стоят рядом с мальчиком (здесь они выделены: BGBGBGBGGG), и 7 детей, которые стоят рядом с девочкой (BGBGBGBGGG). Теперь Боб хочет решить расширенную версию этой задачи: Есть n детей, стоящих в кругу, x из них стоят рядом с мальчиком, а y из них стоят рядом с девочкой. Как такое могло быть? Помогите Бобу написать эту программу в расширенной версии.
1
1
10 5 7
GBGGGBGBGB
10 3 8
Impossible
Петрик обожает конструкторы. В этот раз он захотел поиграть с набором прямоугольных брусков. Этот набор состоит из n брусков, причем содержит ровно по одному бруску каждого из размеров 1 * 1, 1 * 2, ..., 1 * n. Петрик хочет выбрать некоторые бруски из набора и построить из них пирамидку. Пирамидка состоит из одного или более уровней высотой в один кубик, в каждом уровне бруски расположены горизонтально вплотную друг к другу меньшей стороной, а самый левый брусок в уровне расположен вплотную к стене, и каждый следующий уровень не более длиной, чем предыдущий (считая снизу вверх). При этом Петрик считает, что пирамидка будет более устойчивой, если каждый брусок в каждом уровне, кроме низкого, будет лежать не менее чем на двух брусках с предыдущего уровня. Например, такая конструкция не является пирамидкой, потому что брусок 1 * 2 лежит только на одном бруске: Найдите пирамидку с наибольшим количеством уровней, которую можно построить из некоторых брусков из данного набора с n брусков. Если таких пирамидок несколько, то выведите любую.
Одно целое число n ( 1 ≤ n ≤ 10 5 )
В первой строке целое число M - количество уровней в пирамидке с наибольшим возможным количеством уровней. Далее М строк, описывающих уровень снизу вверх, каждая из этих строк начинается с числа - количества брусков в соответствующем уровне, далее чисел - длины брусков в соответствующем уровне в порядке слева направо.
5
2 4 1 3 4 5 1 2