eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Потенціал рядка

Потенціал рядка

Задано рядок \textbf{s}, який складається з \textbf{k} перших маленьких літер латинського алфавіту. Як і у \href{/problems/2158}{попередній задачі}, відстанню між двома символами цього рядкаи \textbf{s_i}, \textbf{s_j} будемо вважати різницю між їх позиціями, тобто \textbf{|j−i|}. Визначимо потенціал цього рядка наступним чином. Нехай відома функція \textbf{f(c_1,c_2)}, яка кожній парі літер ставить у відповідність деяку вагу. Ця функція є симетричною віднсно своїх аргументів, тобто \textbf{f(c_1,c_2) = f(c_2,c_1)}. Потенціалом між парою символів \textbf{s_i} і \textbf{s_j} рядкаи \textbf{s} назвемо добуток їх вагової функції на відстань між ними. Потенціал рядка буде тоді обчислюватись як сумарний потенціал між усіма парами символів. Напишіть програму, яка визначає потенціал заданого рядка \textbf{s}. \InputFile У першому рядку вхідного файлу записано ціле число \textbf{k} (\textbf{1} ≤ \textbf{k} ≤ \textbf{26}), кількість перших літер латинського алфавіту, які можуть бути у рядку. У другому рядку задано рядок \textbf{s}. Його довжина не перевищує \textbf{10^6}. У наступних \textbf{k} рядках задана вагова функція, \textbf{i}-тий з них містить \textbf{i} чисел, \textbf{j}-те з яких позначає величину ваги для \textbf{i}-ого і \textbf{j}-ого у порядку алфавіту латинської літери. Усі ваги не перевищують \textbf{10^6} по абсолютній величині. \OutputFile У вихідний файл необхідно вивести одне число -- потенціал рядка \textbf{s}.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
3
abcacba
1
0 1
1 0 1
Вихідні дані #1
32
Джерело International Collegiate Programming Contest, Ukraine, Quarter-Final,May 19, 2011