12015. Утворити паліндром


Відправити розв'язок

Бали: 100
Time limit: 2.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Вам надано рядок \(S\) довжини \(N\). Нехай \(S_i\) ​ \((1≤i≤N)\) буде \(i\)-м символом \(S\).

Ви можете виконувати такі два види операцій нуль або більше разів у будь-якому порядку:

  • Сплатити A грн. Перемістити крайній лівий символ \(S\) у правий кінець. Іншими словами, змініть \(S_1\) ​ \(S_2 ​ …S_N\) ​ на \(S_2 ​ …S_N ​ S_1\) ​ .
  • Заплатити B грн. Виберіть ціле число \(i\) між 1 і \(N\) і замініть \(S_i\) будь-якою малою літерою англійського алфавіту.

Скільки потрібно заплатити, щоб зробити \(S\) паліндромом?

Обмеження

  • \(1≤N≤5000\)
  • \(1≤A,B≤10^9\)
  • \(S\) – це рядок довжиною \(N\), що складається з малих літер англійського алфавіту.
  • Усі значення у вхідних даних, крім \(S\), є цілими.

Формат вхідних даних

Перший рядок містить цілі числа \(N,A,B\).

Наступний   рядок містить \(S\).

Формат вихідних даних

У вихідний потік виведіть відповідь.

Приклад вхідних даних

5 1 2
rrefa

Приклад вихідних даних

3

По-перше, заплатите 2 грн, щоб виконати операцію другого роду один раз: нехай \(i=5\) замінить \(S_5\) на e. S тепер rrefe.

Потім сплатіть 1 грн, щоб виконати операцію першого виду один раз. \(S\) тепер refer, що є паліндромом.

Таким чином, ви можете зробити \(S\) паліндромом за 3 грн.

Приклад вхідних даних

8 1000000000 1000000000
bcdfcgaa

Приклад вихідних даних

4000000000

Коментарі

Ще немає коментарів.