Ctrl K

Расчистка цветных кубиков

Сложная
В ряд выложены кубики, цвет каждого задан положительным числом в массиве cubes. За один ход можно выбрать любой непрерывный отрезок подряд идущих кубиков **одного цвета** и убрать его целиком. Если в отрезке было t кубиков, вы получаете t · t очков. После этого оставшиеся кубики сдвигаются, и соседями становятся те, что стояли по краям убранного отрезка. Ходы повторяются, пока ряд не опустеет. Верните максимальное число очков, которое можно набрать.
Пример 1
cubes=[3, 1, 1, 3, 2, 3] → 14

Убираем две единицы (4 очка), затем двойку (1 очко) — три тройки сходятся вместе и дают 9 очков. Итого 4 + 1 + 9 = 14.

Пример 2
cubes=[5, 5, 5, 5] → 16

Все кубики одного цвета — убираем их одним ходом: 4 · 4 = 16.

Пример 3
cubes=[1, 2, 3] → 3

Соседних одинаковых нет, каждый кубик приносит 1 очко.

Ограничения
  • 1 ≤ len(cubes) ≤ 100
  • 1 ≤ cubes[i] ≤ 100
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВсе способы расставить пробелы СложнаяСамый длинный подъём по карте СложнаяПятнашки на шесть клеток СложнаяРазрезать торт с ягодами СложнаяДругие порядки для того же дерева поиска Сложная
загружаем Python…
Вход
cubes=[3, 1, 1, 3, 2, 3]
Ожидается
14

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 125 тестов на сервере, включая скрытые.