아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Пузырьки 1D

시간 제한2초메모리 제한1024 MB

요약
색이 칠해진 풍선들이 일렬로 있을 때, 같은 색 두 개 이상으로 이루어진 그룹을 터뜨려 길이의 제곱만큼 점수를 얻으며 모든 풍선을 제거할 수 있는지와 최대 점수를 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 구간
정답자
아직 제출이 없습니다

문제

Сережа --- большой любитель игр на сотовом телефоне. Недавно он скачал из интернета новую игру <<Пузырьки 1D>>. Опишем правила игры.

Исходная позиция в игре представляет собой nn пузырьков, расположенных вертикально в ряд. Каждый пузырек окрашен в один из четырех цветов --- красный, зеленый, синий или желтый. Назовем группой несколько следующих подряд пузырьков одинакового цвета, непосредственно сверху и снизу от которых находятся либо пузырьки другого цвета, либо границы ряда пузырьков.

За один ход разрешается выбрать любую группу, состоящую хотя бы из двух пузырьков, и взорвать ее. За взрыв группы, содержащей kk пузырьков, игрок получает k2k^2 очков. После взрыва группы пузырьки, которые находились сверху, опускаются вниз.

Например, ниже на рисунке показана позиция, содержащая 10 пузырьков. В ней четыре группы, содержащие 3, 2, 4 и 1 пузырек, соответственно. Если взорвать группу, содержащую четыре пузырька, то игрок получит 16 очков, и верхние 5 пузырьков опустятся вниз. В получившейся позиции 6 пузырьков, и две группы по 3 пузырька в каждой.

По заданной начальной позиции в игре выясните, сможет ли Сережа уничтожить все пузырьки, и если да, то какое максимальное количество очков он сможет заработать.

입력

Входной файл содержит одну строку, состоящую из букв <<R>>, <<G>>, <<B>> и <<Y>>, описывающую начальную позицию. Буквы задают цвета пузырьков в порядке просмотра сверху вниз (<<R>> означает красный пузырек, <<G>> --- зеленый, <<B>> --- синий, а <<Y>> --- желтый).

В заданной позиции не менее двух и не более 100 пузырьков.

출력

Выведите в выходной файл одно число --- максимальное количество очков, которое сможет заработать Сережа. Если уничтожить все пузырьки невозможно, выведите 0.

힌트

В первом примере следует действовать следующим образом: сначала надо взорвать группу из четырех красных пузырьков, получив 16 очков. Затем надо взорвать в любом порядке получившиеся две группы по 3 пузырька, получив по 9 очков за каждую.

예제2

  1. 예제 1

    입력
    RRRGGRRRRG
    
    예상 출력
    34
    
  2. 예제 2

    입력
    RB
    
    예상 출력
    0