对称括号串
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一个由左括号 `(` 与右括号 `)` 构成,长度为 n 的字符串 s

每次操作可以将 s 串的任意位置删去或添加一个括号。

删去左括号的花费为 a,添加左括号的花费为 b

删去右括号的花费为 c,添加右括号的花费为 d

请问将 s 变成左右镜像对称的串 (空串也是对称的括号串) 的最小花费是多少?

左右镜像对称的例子有:'()','))((','()()'

非左右镜像对称的例子有:'((','((((','())'

输入描述:

第一行:一个整数 n,表示字符串的长度 (  )。

第二行:长度为n的字符串 ss 仅由括号 `(`、 `)` 构成。

第三行:a, b, c, d,含义如上所述。 ( )

输出描述:

一行一个非负整数表示最小的花费。
示例1

输入

复制
1
(
3 9 5 8

输出

复制
3
示例2

输入

复制
4
(())
1 2 3 4

输出

复制
0
示例3

输入

复制
5
())()
1 2 2 1

输出

复制
2
示例4

输入

复制
10
))))))))))
1 2 3 4

输出

复制
20