#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:

  1. Change a single ‘(’ to a ‘)’ in the sequence.
  2. 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 kk operations to balance the sequence.

A balanced parenthetical sequence is defined as:

  1. The empty string

  2. ABAB where AA and BB are both balanced parenthetical sequences

  3. (A)(A) where AA 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 kk 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 nn and kk, where nn (1n1051 \leq n \leq 10^5) is the length of the sequence, and kk (0kn0 \leq k \leq n) is the maximum number of moves for Bruce.

The next line contains a single string of length nn consisting of only the characters ‘(’ and ‘)’. This string is NOT required to be balanced.

The next nn lines will each contain a single integer cc (1,000c1,000-1{,}000 \leq c \leq 1{,}000), 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
?