#P16152. [ICPC 2017 NAIPC] Unbalanced Parentheses
[ICPC 2017 NAIPC] Unbalanced Parentheses
题目描述
Barry and Bruce are twin brothers. Bruce likes keeping his parenthetical sequences balanced. Barry would like to mess with Bruce by performing some operations on the sequence. Each operation is one of the following:
- Change a single ‘(’ to a ‘)’ in the sequence.
- Change a single ‘)’ to a ‘(’ in the sequence.
Bruce will attempt to rebalance the parenthetical sequence by performing the same operations. Bruce does not like tedium and will perform no more than operations to balance the sequence.
A balanced parenthetical sequence is defined as:
-
The empty string
-
where and are both balanced parenthetical sequences
-
where is a balanced parenthetical sequence
Barry would like to disrupt the sequence to the point where it is impossible for Bruce to rebalance the sequence in moves. Changing some position in the sequence requires effort and the amount of effort varies by position. Some positions are even delightful to switch and require negative effort. Each position can be changed at most once.
Barry hates effort and would like to compute the minimum sum of effort to ensure that Bruce cannot balance the sequence.
输入格式
Each input will consist of a single test case. Note that your program may be run multiple times on different inputs. The first line of input will contain two integers and , where () is the length of the sequence, and () is the maximum number of moves for Bruce.
The next line contains a single string of length consisting of only the characters ‘(’ and ‘)’. This string is NOT required to be balanced.
The next lines will each contain a single integer (), which is the cost of changing each parenthesis in order.
输出格式
Output a single integer, which is the minimum sum of effort of moves required to make the string impossible to be balanced by Bruce. If Bruce can always rebalance the string regardless of Barry’s actions, print a single question mark (?).
4 1
((()
480
617
-570
928
480
4 3
)()(
-532
870
617
905
?