Игра «Палиндромика» набирает все большую популярность в казино Рулеттенбурга. Правила «Палиндромики» довольно просты: в начале игры на листок записывается строка и игроки поочередно стирают первый или последний символ. Побеждает игрок, перед ходом которого строка представляет собой палиндром. Палиндромом называется строка, которая читается одинаково как слева направо, так и справа налево.
Алексей Иванович — азартный игрок, однако вместо участия в игре предпочитает делать ставки. Ему удалось узнать, какая строка будет предложена для игры. Алексею Ивановичу предсказать исход игры при оптимальных действиях обоих игроков не под силу. За помощью он обратился к вам.
В единственной строке входного файла содержится строка, предложенная игрокам. Строка состоит из маленьких латинских букв. Длина строки не превышает 250 символов.
Выведите номер игрока, который победит в игре (число 1 или 2) при оптимальной игре каждого из игроков.
3 uho
1
6 ababab
2
Дана последовательность чисел a1, a2, ..., an. За одну операцию разрешается удалить любое (кроме крайних) число, заплатив за это штраф, равный произведению этого числа на сумму соседних. Требуется удалить все числа, кроме крайних, с минимальным суммарным штрафом.
Пример начальной последовательности:
1 50 51 50 1
удаляем четвертое число, штраф 50·(1 + 51) = 2600, получаем
1 50 51 1
удаляем третье число, штраф 51·(50 + 1) = 2601, получаем
1 50 1
удаляем второе число, штраф 50·(1 + 1) = 100.
Итого, штраф 5301.
В первой строке входного файла расположено одно число n (1 ≤ n ≤ 100) — количество чисел в последовательности.
Во второй строке находятся n целых чисел a1, a2, ... an; никакое из чисел по модулю не превосходит 100.
Выведите в выходной файл одно число — минимальный суммарный штраф.
5 1 50 51 50 1
5301
На аллее перед зданием Министерства Обороны в ряд высажены n дубов. В связи с грядущим приездом главнокомандующего, было принято решение срубить несколько деревьев для придания аллее более милитаристического вида.
Внутренние распорядки министерства позволяют срубать дуб только в двух случаях:
В частности, согласно этому правилу, нельзя срубить крайний левый и крайний правый дубы.
Министр хочет выработать такой план вырубки, чтобы в итоге осталось несколько дубов, высоты которых образуют неубывающую последовательность, то есть чтобы каждый дуб был не ниже, чем все дубы, стоящие слева от него. При этом, как человек любящий флору, министр хочет, чтобы было срублено минимальное возможное количество деревьев.
Помогите сотрудникам министерства составить оптимальный план вырубки аллеи или выяснить, что срубить дубы соответствующим образом невозможно.
Первая строка входного файла содержит целое число n — количество дубов, растущих на аллее (2 ≤ n ≤ 200). Вторая строка содержит n чисел — высоты дубов, приведенные слева направо. Высоты дубов — положительные целые числа, не превышающие 1 000.
Если оставить последовательность дубов с неубывающими высотами невозможно, выходной файл должен содержать только одно число - 1.
В случае, если искомый план существует, в первую строку выходного файла выведите целое число m — минимальное количество дубов, которые необходимо срубить. В следующие m строк выведите оптимальный план вырубки деревьев — номера дубов в том порядке, в котором их следует срубать, по одному номеру на строке.
Дубы нумеруются слева направо натуральными числами от 1 до n.
Если планов с наименьшим числом срубаемых дубов несколько, выведите любой из них.
5 3 2 4 8 5
2 2 4
На аллее перед зданием Министерства Обороны в ряд высажены \(n\) дубов. В связи с грядущим приездом главнокомандующего, было принято решение срубить несколько деревьев для придания аллее более милитаристического вида.
Внутренние распорядки министерства позволяют срубать дуб только в двух случаях:
* Если и ближайший дуб слева, и ближайший дуб справа строго ниже, чем данный дуб.
* Если и ближайший дуб слева, и ближайший дуб справа строго выше, чем данный дуб.
В частности, согласно этому правилу, нельзя срубить крайний левый и крайний правый дуб.
Министр хочет выработать такой план вырубки, чтобы в итоге осталось несколько дубов, высоты которых образуют неубывающую последовательность, то есть чтобы каждый дуб был не ниже, чем все дубы, стоящие слева от него. При этом, как человек любящий флору, министр хочет, чтобы было срублено минимальное возможное количество деревьев.
Помогите сотрудникам министерства составить оптимальный план вырубки аллеи или выяснить, что срубить дубы соответствующим образом невозможно.
Первая строка входного файла содержит целое число \(n\) — количество дубов, растущих на аллее (\(2\le n \le 200\)). Вторая строка содержит \(n\) чисел — высоты дубов, приведенные слева направо. Высоты дубов — положительные целые числа, не превышающие 1000.
Если оставить последовательность дубов с неубывающими высотами невозможно, выходной файл должен содержать только одно число \(-1\).
В случае, если искомый план существует, в первую строку выходного файла выведите целое число \(m\) — минимальное количество дубов, которые необходимо срубить. В следующие \(m\) строк выведите оптимальный план вырубки деревьев — номера дубов в том порядке, в котором их следует срубать, по одному номеру на строке.
Дубы нумеруются слева направо натуральными числами от \(1\) до \(n\).
Если планов с наименьшим числом срубаемых дубов несколько, выведите любой из них.
В 50 баллов оценивается решение для случая, когда все высоты дубов попарно различны.
5 3 2 4 8 5
2 2 4
5 4 5 5 5 6
0
6 1 1 3 3 2 2
-1
6 400 300 310 300 310 500
-1
В головоломку умножения играют с рядом карт, каждая из которых содержит одно положительное целое число. Во время хода игрок убирает одну карту из ряда и получает число очков, равное произведению числа на убранной карте и чисел на картах, лежащих непосредственно слева и справа от неё. Не разрешено убирать первую и последнюю карты ряда. После последнего хода в ряду остаются только эти две карты.
Цель игры — убрать карты в таком порядке, чтобы минимизировать общее количество набранных очков.
Например, если карты содержат числа 10, 1, 50, 20 и 5, игрок может взять карту с числом 1, затем 20 и 50, получая очки 10·1·50 + 50·20·5 + 10·50·5 = 500 + 5000 + 2500 = 8000. Если бы он взял карты в обратном порядке, то есть 50, затем 20, затем 1, количество очков было бы таким: 1·50·20 + 1·20·5 + 10·1·5 = 1000 + 100 + 50 = 1150.
В первой строке файла находится число карт N, во второй — разделённые пробелами N чисел на картах. Ограничения: 3 ≤ N ≤ 100, числа на картах целые от 1 до 100.
Вывести одно целое число — минимально возможное число очков.
6 10 1 50 50 20 5
3650