printРабочее место участника

printЗадачи

2370. Снукер

Ограничения: время – 1s/2s, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Снукер — это разновидность бильярдной игры, в которой используются разноцветные шары: несколько красных шаров и по одному шару жёлтого, зелёного, коричневого, синего, розового и чёрного цветов. Игрок забивает шары разных цветов в лузы. Забивание шара в лузу оценивается в определенное количество очков в зависимости от цвета шара: красный (red) шар — 1 очко, жёлтый (yellow) — 2 очка, зелёный (green) — 3 очка, коричневый (brown) — 4 очка, синий (blue) — 5 очков, розовый (pink) — 6 очков, чёрный (black) — 7 очков. Если игрок не может забить шар в лузу по правилам, то ход передается другому игроку или игра заканчивается. После красного шара игрок должен забивать в лузу только шар не красного цвета, а после не красного шара нужно забивать красный шар, если на столе остался хотя бы один красный шар, иначе можно бить по любому шару. При этом, пока красные шары остаются на столе, забитые шары не красного цвета выставляются на свои исходные позиции. Игрок может начинать свой ход с шара любого цвета, но при наличии на столе не красных шаров, выгоднее начинать ход с них.
Напишите программу, вычисляющий максимальное количество очков, которое может получить игрок при своем ходе, если он не сделает ошибок.
Первая строка ввода содержит одно целое число `N` (`1\ ≤\ N\ ≤\ 21`). Далее следует `N` строк, в каждой строке содержится название цвета шара на столе.
Вывести одно целое число — максимальное количество очков, которое может получить игрок для заданного набора шаров на столе.

Пример ввода 1

5
red
black
pink
red
red

Пример вывода 1

37
Пояснение к примеру: игрок забивает черный шар, который возвращается на стол, затем красный, затем чёрный, затем красный, затем чёрный, затем красный, затем чёрный (красных шаров больше нет — шары на стол не возвращаются) и розовый. Таким образом игрок получает 7+1+7+1+7+1+7+6=37 очков.

Пример ввода 2

3
blue
black
pink

Пример вывода 2

18

Пример ввода 3

8
yellow
green
brown
red
red
red
red
red

Пример вывода 3

34

Пример ввода 4

2
red
red

Пример вывода 4

1

loading